我使用的是log4jv.1,我想升级到log4jv.2。我有一个函数,可以检查是否也要登录到一个文件,如果是这样,我将使用log4j.xml文件中的fa appender,并选择一个文件。然后登录。我的log4j.xml文件:
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' debug="false">
<appender name="CA" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{ISO8601} %-5p] %m%n"/>
</layout>
</appender>
<appender name="FA" class="org.apache.log4j.RollingFileAppender">
<param name="Threshold" value="TRACE"/>
<param name="maxBackupIndex" value="10"/>
<param name="maxFileSize" value="10MB"/>
<param name="append" value="true"/>
<param name="file" value="${cliLogPath}.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ISO8601} [%t] (%F:%L) %-5p - %m%n"/>
</layout>
</appender>
<category name="org.apache.http">
<priority value="WARN"/>
</category>
<category name="org.apache.cxf">
<priority value="ERROR"/>
</category>
<category name="org.springframework">
<priority value="ERROR"/>
</category>
<category name="org.whitesource.agent">
<priority value="ERROR"/>
</category>
<root>
<level value="TRACE"/>
<appender-ref ref="FA"/>
<appender-ref ref="CA"/>
</root>
</log4j:configuration>
在代码中,我是这样处理的:
private static void initLogging(CommandLine commandLine) throws CLIParsingException {
String logPath = commandLine.getOptionValue(LOG_PATH, "." + File.separator + "logs" + File.separator + "logfile.log");
File logFile = new File(logPath);
DOMConfigurator.configure("." + File.separator + "log4j.xml");
try {
if (!logFile.exists()) {
Files.createParentDirs(logFile);
Files.touch(logFile);
}
Writer writer = new FileWriter(logPath);
Appender faAppender = org.apache.log4j.Logger.getRootLogger().getAppender("FA");
if (commandLine.hasOption(Parameters.VERBOSE)) {
((RollingFileAppender) faAppender).setThreshold(Level.TRACE);
}
((RollingFileAppender) faAppender).setWriter(writer);
log.info("[CxConsole] Log file location: " + logPath);
} catch (IOException e) {
throw new CLIParsingException("error creating log file", e);
}
}
但是我在log4j2中找不到这样做的方法。我想创建一个文件附加器,我可以给它一个日志文件的位置在运行时,并能够记录到该文件,在相同的格式,配置在log4j.xml任何帮助将不胜感激
暂无答案!
目前还没有任何答案,快来回答吧!