Tag: log4j

将log4j.properties转换为log4j.xml

我无法在任何地方找到如何在log4j.xml中指定常量。 例如,我在log4j.properties中有这个常量: #Log directory dal.log.dir=/var/log/pojodal/ # Log filename dal.log.file=pojodal.log 我在属性文件的其他部分使用如下常量: log4j.appender.DRFA1.File=${dal.log.dir}/${dal.log.file} 如何在log4j.xml中实现相同的行为?

如何仅为特定类配置log4j2.xml日志级别?

在log4j ,可以按package定义日志级别,如下所示: Questin:我怎样才能定义特定类的日志记录? (例如org.springframework.web.servlet.mvc.method.annotation.EndpointHandlerMapping )? 如果我把它放到<logger name属性中,则不再<logger name任何内容。

如何使用log4j的相同记录器将不同的信息写入两个不同的文件?

我想使用我的记录器写入两个不同的文件,声明如下: public static final Logger logger = Logger.getLogger(Adapt.class); PropertyConfigurator.configure(“log4j.properties”); log4j文件包含: log4j.rootLogger=DEBUG, FA #File Appender log4j.appender.FA=org.apache.log4j.FileAppender log4j.appender.FA.File=temp.ppr log4j.appender.FA.layout=org.apache.log4j.PatternLayout log4j.appender.FA.append=false log4j.appender.FA.layout.ConversionPattern= %m%n 是否可以使用记录器轻松地将不同的文本写入两个不同的文件? 如果没有,有没有办法用两个记录器做到这一点? (我试过并因为函数configure而出现问题,这是静态的。) 谢谢。

使用log4j包装器在日志语句中打印“source”类

我的应用程序有一个自制日志记录类,我正在迁移到使用log4j。 但是,由于我使用自制程序类将应用程序的其余日志语句传递给log4j,因此输出语句将记录为来自包装类而不是源类。 除了为每个日志语句创建新的org.apache.log4j.Logger实例之外,还有办法确保显示“正确”的源吗? 我也尝试过使用Logger.log(String callerFQCN,Priority level,Object message,Throwable t)方法,但它似乎没有用,例如: public class Logger2 { public static org.apache.log4j.Logger log4JLogger = org.apache.log4j.Logger.getLogger(Logger2.class); public static void warning(Object source, String message) { log(source, message, Level.WARN, null) } private static void log(Object source, String message, Level level, Throwable t) { String className = source.getClass().getName(); System.out.println(“Logging class should be ” + className); log4JLogger.log(className, […]

如何在java中使用multithreading中的log4j?

我想使用log4j为每个线程写日志,日志文件名为“workthread..log”,第一个线程打印日志文件为“workthread-1.log”,第二个线程为“workthread-2.log”等等。 class MyRunnable implements Runnable { private Logger logger=null; public MyRunnable() { DOMConfigurator.configure(this.getClass().getClassLoader().getResource(LOG4J_FILEPATH)); logger =Logger.getLogger(classname); } public void run() { logger.info(“Important job running in MyRunnable”+Thread.currentThread().getName()); } } public class TestThreads { public static void main (String [] args) { Thread[] worker=new Thread[3]; MyRunnable r = new MyRunnable(); for(int i=0;i<3;i++) { worker[i]=new Thread(r); worker[i].start(); } } […]

使用Log4j的每个用户的不同日志

我有一个web应用程序,我想为每个用户使用不同的日志,因此我可以拥有用户在系统上所做的“历史记录”。 这是我到目前为止: import java.io.File; import java.io.IOException; import org.apache.log4j.DailyRollingFileAppender; import org.apache.log4j.FileAppender; import org.apache.log4j.SimpleLayout; import org.apache.log4j.Logger; public class LogManager { public Logger getLog(String username) throws IOException{ SimpleLayout layout = new SimpleLayout(); FileAppender appender = new DailyRollingFileAppender(layout, “users”+File.pathSeparator+username+File.pathSeparator+username, “‘.’yyyy-MM”); // configure the appender here, with file location, etc appender.activateOptions(); Logger logger = Logger.getRootLogger(); logger.addAppender(appender); return logger; } } […]

log4j2 JDBC Appender问题:无法插入记录

我创建了一个JDBC appender并绑定了ColumnConfig和DataSourceConnectionSource。 在尝试在DB中插入记录时(Logger.debug(“Test”))。我得到的是exception。 谢谢 [6/16/14 18:44:58:647 GMT-08:00] 00000024 SystemErr R ERROR StatusLogger An exception occurred processing Appender JDBCAppender org.apache.logging.log4j.core.appender.AppenderLoggingException: Failed to insert record for log event in JDBC manager: DSRA1300E: Feature is not implemented: PreparedStatement.setNString at org.apache.logging.log4j.core.appender.db.jdbc.JDBCDatabaseManager.writeInternal(JDBCDatabaseManager.java:117) at org.apache.logging.log4j.core.appender.db.AbstractDatabaseManager.write(AbstractDatabaseManager.java:159) at org.apache.logging.log4j.core.appender.db.AbstractDatabaseAppender.append(AbstractDatabaseAppender.java:103) at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:97) at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:425) at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:406) at org.apache.logging.log4j.core.Logger$PrivateConfig.logEvent(Logger.java:275) at org.apache.logging.log4j.core.async.AsyncLogger.actualAsyncLog(AsyncLogger.java:289) at org.apache.logging.log4j.core.async.RingBufferLogEvent.execute(RingBufferLogEvent.java:99) at org.apache.logging.log4j.core.async.RingBufferLogEventHandler.onEvent(RingBufferLogEventHandler.java:43) […]

log4j rootlogger关闭某些类的记录器

如何使用rootlogger = debug, stdout, logfile配置log4j.properties 和org.apache.httpclient = debug进入日志文件而不是stdout? 将rootlogger提升为info是不可接受的,因为我在调试级别有其他包。

使用日期和时间戳为每次运行创建log4j日志文件

所有,似乎这个问题多次发布,但我仍然没有得到适当的解决方案来解决我的问题。 我提到了这个 ,但这不起作用。 根据下面的属性文件,每次都会创建一个新文件,其中包含日期但是我想创建一个格式低于日期的日志文件,需要在每次执行应用程序时生成, logFileName_MM_DD_YY-HH_MM_SS.log (或)logFileName.log_YYYY_MM_DD_HH_MM_SS # Root logger option log4j.rootLogger=INFO,file,stdout # Redirect log messages to console log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L – %m%n # Direct log messages to a log file log4j.appender.file=org.apache.log4j.DailyRollingFileAppender log4j.appender.file.File=.\\logs\\AppLog.log log4j.appender.file.DatePattern=’.’yyyy-MM-dd log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L – %m%n

Log4j记录到多个文件

在我的Java控制台应用程序中,我想将某些事件记录到日志文件中,而某些其他事件则记录到控制台。 这就是我现在所拥有的 log4j.rootLogger=error, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L – %m%n log4j.appender.L1=org.apache.log4j.FileAppender log4j.appender.L1.layout=org.apache.log4j.PatternLayout log4j.appender.L1.layout.ConversionPattern=%-22d{dd/MMM/yyyy HH:mm:ss} – %m%n log4j.appender.L1.file=failedtoaddusers.log 在我的Java应用程序中,我使用实例化两个日志实例 private static Logger log = Logger.getLogger(ActiveDirectoryManage.class); private static Logger failedToAddUsersLogger = Logger.getLogger(“FailedToAddUsersLogging”); 我的问题是,除了日志文件failedToAddUsersLogger.warn(“xyz”) , failedToAddUsersLogger.warn(“xyz”)也会写入控制台。 我只是想让它写入日志文件而不是控制台。 我该如何做到这一点?