当我尝试从 log4j2 获取日志时,我收到一个额外的空文件。文件名是“$(sys”,它绝对不包含任何内容,但每次运行程序时都会创建它,这是我记录的 java 文件:
public static void main(String[] args){
Logger logger = LogManager.getLogger();
final Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
Date date = cal.getTime();
int mHour = date.getHours();
int mMinute = date.getMinutes();
String filenameWE = String.valueOf(mHour) + "_" + String.valueOf(mMinute)+"_WarErr";
String filenameFull = String.valueOf(mHour) + "_" + String.valueOf(mMinute)+"_Full_Log";
System.setProperty("WarErrFilename", filenameWE);
System.setProperty("FullLogFilename", filenameFull);
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
ctx.reconfigure();
logger.debug("Hello world - debug log");
logger.debug("Hello world - debug log");
logger.debug("Hello world - debug log");
logger.info("Hello world - info log");
logger.info("Hello world - info log");
logger.info("Hello world - info log");
logger.warn("Hello world - warn log");
logger.warn("I farted!");
logger.error("Hello world - error log");
logger.error("Error please insert brain!");
logger.error("Error cant poop!");
}
还有我的 log4j2.xml
<?xml version="1.0" encoding="UTF-8"?><Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<File name="MyFile" fileName="logs/${date:yyyy}/${date:MM}/${date:dd}/${sys:WarErrFilename}.log" immediateFlush="false" append="false">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
<Filters>
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="NEUTRAL" />
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="NEUTRAL" />
<ThresholdFilter level="info" onMatch="DENY" onMismatch="DENY" />
</Filters>
</File>
<File name="Technical"
fileName="logs/${date:yyyy}/${date:MM}/${date:dd}/${sys:FullLogFilename}.log">
<PatternLayout pattern="%d %p %c{1.} [%t] %m%n" />
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console" />
<AppenderRef ref="MyFile"/>
<AppenderRef ref="Technical"/>
</Root>
</Loggers>
</Configuration>
最佳答案
您的配置缺少外部 <Configuration>
您的<Appenders>
元素和<Loggers>
必须嵌套在其中。请查看手册中的示例。
另外,为什么不在从 LogManager 获取 Logger 之前设置系统属性?
关于java - Android:使用 log4j2 创建日志时获取额外的空文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36443343/