configurationlog4j以在运行时logging到自定义文件

任何人都可以请指导我如何configurationlog4jlogin到我在运行时指定的特定文件。日志文件的名称和path在运行时生成,应用程序必须login到该特定的文件。

通常,log4j.properties文件中的文件appender条目指向将由应用程序使用的日志文件。但是在这种情况下,我想从命令行读取日志文件path并logging到该特定文件。

我怎样才能做到这一点?

改编自log4j文档:

import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.SimpleLayout; import org.apache.log4j.FileAppender; public class SimpandFile { static Logger logger = Logger.getLogger(SimpandFile.class); public static void main(String args[]) { // setting up a FileAppender dynamically... SimpleLayout layout = new SimpleLayout(); FileAppender appender = new FileAppender(layout,"your filename",false); logger.addAppender(appender); logger.setLevel((Level) Level.DEBUG); logger.debug("Here is some DEBUG"); logger.info("Here is some INFO"); logger.warn("Here is some WARN"); logger.error("Here is some ERROR"); logger.fatal("Here is some FATAL"); } } 

您也可以从log4j.properties文件中执行此操作。 使用下面的示例文件,我添加了系统属性$ {logfile.name}

 # logfile is set to be a RollingFileAppender log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.File=${logfile.name} log4j.appender.logfile.MaxFileSize=10MB log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=[%-5p]%d{yyyyMMdd@HH\:mm\:ss,SSS}\:%c - %m%n 

日志文件名称可以通过两种不同的方式设置:

  1. 作为命令行,将系统属性传递给java“-Dlogfile.name = {logfile}”
  2. 在java程序中直接通过设置一个系统属性(在你对log4j进行任何调用之前)。

    System.setProperty(“logfile.name”,“some path / logfile name string”);

也可以通过在log4j.properties文件中定义这个属性来完成

 log4j.appender.logfile=org.apache.log4j.RollingFileAppender log4j.appender.logfile.maxFileSize=5000KB log4j.appender.logfile.maxBackupIndex=5 log4j.appender.logfile.File=/WebSphere/AppServer/profiles/Custom01/error.log log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5p [%t] %C %M %c{1}:%L - %m%n 

工作和相同已经过testing

 // setting up a FileAppender dynamically... SimpleLayout layout = new SimpleLayout(); RollingFileAppender appender = new RollingFileAppender(layout,"file-name_with_location",true); appender.setMaxFileSize("20MB"); logger.addAppender(appender);