📄 clogmgt.java
字号:
/******************************************************************************
* The contents of this file are subject to the Compiere License Version 1.1
* ("License"); You may not use this file except in compliance with the License
* You may obtain a copy of the License at http://www.compiere.org/license.html
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
* The Original Code is Compiere ERP & CRM Smart Business Solution. The Initial
* Developer of the Original Code is Jorg Janke. Portions created by Jorg Janke
* are Copyright (C) 1999-2005 Jorg Janke.
* All parts are Copyright (C) 1999-2005 ComPiere, Inc. All Rights Reserved.
* Contributor(s): ______________________________________.
*****************************************************************************/
package org.compiere.util;
import java.io.*;
import java.net.*;
import java.sql.*;
import java.util.*;
import java.util.jar.*;
import java.util.logging.*;
import org.compiere.*;
import org.compiere.db.*;
import org.compiere.model.*;
import com.qoppa.pdf.*;
/**
* Compiere Log Management.
*
* @author Jorg Janke
* @version $Id: CLogMgt.java,v 1.15 2005/12/31 06:33:21 jjanke Exp $
*/
public class CLogMgt
{
/**
* Initialize Logging
* @param isClient client
*/
public static void initialize(boolean isClient)
{
if (s_handlers != null)
return;
LogManager mgr = LogManager.getLogManager();
try
{ // Load Logging config from org.compiere.util.*properties
String fileName = "logClient.properties";
if (!isClient)
fileName = "logServer.properties";
InputStream in = CLogMgt.class.getResourceAsStream(fileName);
BufferedInputStream bin = new BufferedInputStream(in);
mgr.readConfiguration(bin);
in.close();
}
catch (Exception e)
{
e.printStackTrace();
}
// Create Handler List
s_handlers = new ArrayList<Handler>();
try
{
Logger rootLogger = Logger.getLogger("");
// System.out.println(rootLogger.getName() + " (" + rootLogger + ")");
Handler[] handlers = rootLogger.getHandlers();
for (int i = 0; i < handlers.length; i ++)
{
// System.out.println(" > " + handlers[i]);
if (!s_handlers.contains(handlers[i]))
s_handlers.add(handlers[i]);
}
/**
Enumeration en = mgr.getLoggerNames();
while (en.hasMoreElements())
{
Logger lll = Logger.getLogger(en.nextElement().toString());
System.out.println(lll.getName() + " (" + lll + ")");
// System.out.println("- level=" + lll.getLevel());
// System.out.println("- parent=" + lll.getParent() + " - UseParentHandlers=" + lll.getUseParentHandlers());
// System.out.println("- filter=" + lll.getFilter());
handlers = lll.getHandlers();
// System.out.println("- handlers=" + handlers.length);
for (int i = 0; i < handlers.length; i ++)
{
System.out.println(" > " + handlers[i]);
if (!s_handlers.contains(handlers[i]))
s_handlers.add(handlers[i]);
}
// System.out.println();
}
/** **/
}
catch (Exception e)
{
if (e instanceof ClassNotFoundException) // WebStart
;
/**
Can't load log handler "org.compiere.util.CLogConsole"
java.lang.ClassNotFoundException: org.compiere.util.CLogConsole
java.lang.ClassNotFoundException: org.compiere.util.CLogConsole
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.util.logging.LogManager$7.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.logging.LogManager.initializeGlobalHandlers(Unknown Source)
at java.util.logging.LogManager.access$900(Unknown Source)
at java.util.logging.LogManager$RootLogger.getHandlers(Unknown Source)
at org.compiere.util.CLogMgt.initialize(CLogMgt.java:67)
at org.compiere.Compiere.startup(Compiere.java:389)
at org.compiere.Compiere.main(Compiere.java:500)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javaws.Launcher.executeApplication(Unknown Source)
at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
at com.sun.javaws.Launcher.continueLaunch(Unknown Source)
at com.sun.javaws.Launcher.handleApplicationDesc(Unknown Source)
at com.sun.javaws.Launcher.handleLaunchFile(Unknown Source)
at com.sun.javaws.Launcher.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
**/
else
System.err.println(e.toString());
}
// System.out.println("Handlers=" + s_handlers.size());
// Check Loggers
if (CLogErrorBuffer.get(false) == null)
addHandler(CLogErrorBuffer.get(true));
if (CLogConsole.get(false) == null && isClient)
addHandler(CLogConsole.get(true));
CLogFile fh = CLogFile.get (false, null, isClient);
if (fh == null && !isClient)
{
fh = CLogFile.get (true, null, isClient);
addHandler(fh);
}
if (fh != null && !isClient)
System.out.println(fh);
setFormatter(CLogFormatter.get());
setFilter(CLogFilter.get());
// setLevel(s_currentLevel);
// setLoggerLevel(Level.ALL, null);
//
CLogMgtLog4J.initialize(isClient);
// System.out.println("Handlers=" + s_handlers.size() + ", Level=" + s_currentLevel);
} // initialize
/** Handlers */
private static ArrayList<Handler> s_handlers = null;
/** Current Log Level */
private static Level s_currentLevel = Level.INFO;
/** Logger */
private static Logger log = Logger.getAnonymousLogger();
/** LOG Levels */
public static final Level[] LEVELS = new Level[]
{Level.OFF, Level.SEVERE, Level.WARNING, Level.INFO,
Level.CONFIG, Level.FINE, Level.FINER, Level.FINEST, Level.ALL};
/** New Line */
private static final String NL = System.getProperty("line.separator");
/**
* Get Handlers
* @return handlers
*/
protected static Handler[] getHandlers()
{
Handler[] handlers = new Handler[s_handlers.size()];
for (int i = 0; i < s_handlers.size(); i++)
handlers[i] = (Handler)s_handlers.get(i);
return handlers;
} // getHandlers
/**
* Add Handler (to root logger)
* @param handler new Handler
*/
public static void addHandler(Handler handler)
{
if (handler == null)
return;
Logger rootLogger = Logger.getLogger("");
rootLogger.addHandler(handler);
//
s_handlers.add(handler);
log.log(Level.CONFIG, "Handler=" + handler);
} // addHandler
/**
* Set Formatter for all handlers
* @param formatter formatter
*/
protected static void setFormatter (java.util.logging.Formatter formatter)
{
for (int i = 0; i < s_handlers.size(); i++)
{
Handler handler = (Handler)s_handlers.get(i);
handler.setFormatter(formatter);
}
log.log(Level.CONFIG, "Formatter=" + formatter);
} // setFormatter
/**
* Set Filter for all handlers
* @param filter filter
*/
protected static void setFilter (Filter filter)
{
for (int i = 0; i < s_handlers.size(); i++)
{
Handler handler = (Handler)s_handlers.get(i);
handler.setFilter(filter);
}
log.log(Level.CONFIG, "Filter=" + filter);
} // setFilter
/**
* Set Level for all Loggers
* @param level log level
* @param loggerNamePart optional partial class/logger name
*/
public static void setLoggerLevel (Level level, String loggerNamePart)
{
if (level == null)
return;
LogManager mgr = LogManager.getLogManager();
Enumeration en = mgr.getLoggerNames();
while (en.hasMoreElements())
{
String name = en.nextElement().toString();
if (loggerNamePart == null
|| name.indexOf(loggerNamePart) != -1)
{
Logger lll = Logger.getLogger(name);
lll.setLevel(level);
}
}
} // setLoggerLevel
/**
* Set Level for all handlers
* @param level log level
*/
public static void setLevel (Level level)
{
if (level == null)
return;
for (int i = 0; i < s_handlers.size(); i++)
{
Handler handler = (Handler)s_handlers.get(i);
handler.setLevel(level);
}
// JDBC if ALL
setJDBCDebug(s_currentLevel.intValue() == Level.ALL.intValue());
//
if (level.intValue() != s_currentLevel.intValue())
{
setLoggerLevel(level, null);
log.config(level.toString());
}
s_currentLevel = level;
} // setHandlerLevel
/**
* Set Level
* @param intLevel integer value of level
*/
public static void setLevel (int intLevel)
{
setLevel(String.valueOf(intLevel));
} // setLevel
/**
* Set Level
* @param levelString string representation of level
*/
public static void setLevel (String levelString)
{
if (levelString == null)
return;
//
for (int i = 0; i < LEVELS.length; i++)
{
if (LEVELS[i].getName().equals(levelString))
{
setLevel(LEVELS[i]);
return;
}
}
log.log(Level.CONFIG, "Ignored: " + levelString);
} // setLevel
/**
* Set JDBC Debug
* @param enable
*/
public static void setJDBCDebug(boolean enable)
{
if (enable)
DriverManager.setLogWriter(new PrintWriter(System.err));
else
DriverManager.setLogWriter(null);
} // setJDBCDebug
/**
* Get logging Level of handlers
* @return logging level
*/
public static Level getLevel()
{
return s_currentLevel;
} // getLevel
/**
* Get logging Level of handlers
* @return logging level
*/
public static int getLevelAsInt()
{
return s_currentLevel.intValue();
} // getLevel
/**
* Is Logging Level logged
* @param level level
* @return true if it is logged
*/
public static boolean isLevel (Level level)
{
if (level == null)
return false;
return level.intValue() >= s_currentLevel.intValue();
} // isLevel
/**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -