java - Android:使用 log4j2 创建日志时获取额外的空文件

标签 java android logging configuration log4j2

当我尝试从 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/

相关文章:

java - Maven3 无法从远程仓库获取最新的 Artifact SNAPSHOT 版本

android - 如何将 HSL 颜色转换为其他颜色,如 RGB、Hex?

java - 为什么我的 log4j 类只记录 FATAL 消息?

java - 计算字节数组的 SHA-1

java - Jenkins 使用了错误的 commons-io

java - Android scrollview 去除蓝光

java - 解析Android - 如何从另一个类查询ObjectId到_User类

java - 为同一应用程序中的多个项目配置 log4j。服务器

logging - 如何在 MSTest 中记录和离开单元测试

java - 使用java创建动态rich :panelMenu