首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >更新log4j2 filename会给出错误FileManager java.io.IOException:文件名、目录名或卷标签语法不正确

更新log4j2 filename会给出错误FileManager java.io.IOException:文件名、目录名或卷标签语法不正确
EN

Stack Overflow用户
提问于 2022-01-18 23:14:59
回答 1查看 1.4K关注 0票数 0

我有一个log4j2.xml文件,用于定义一些输出到.log文件的记录器。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>
    <Appenders>
        <Console name="ConsoleAppender" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{MM-dd HH:mm:ss  } %p - %m%n"/>
        </Console>

        <File name="LogFileAppender" fileName="${sys:logFileName}" append="false">
            <PatternLayout>
                <Pattern>%d [%t] %p - %m%n</Pattern>
            </PatternLayout>
        </File>
    </Appenders>

    <Loggers>
        <Root level="error">
            <AppenderRef ref="ConsoleAppender" />
            <AppenderRef ref="LogFileAppender"/>

        </Root>
    </Loggers>
</Configuration>

在fileNames已被读取之后,我在java中为记录器.xml设置了完整的路径。

代码语言:javascript
复制
public static void initializeLoggers(String logPath)
{
    // set output paths for log files
    System.setProperty("logFileName", logPath + "PROJECT.log");

    // reconfigure loggers with paths
    org.apache.logging.log4j.core.LoggerContext ctx =
            (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
    ctx.reconfigure();
}

代码按预期工作,日志输出到更新的路径,但我在下面遇到以下这些错误:

2022-01-18 15:05:26,685主要错误FileManager (${sys:logFileName}) java.io.IOException:文件名、目录名或卷标签语法不正确java.io.IOException:文件名、目录名或卷标签语法不正确

2022-01-18 15:05:26,693主要错误无法为元素文件创建类型为org.apache.logging.log4j.core.appender.FileAppender的插件: java.lang.IllegalStateException: ManagerFactory org.apache.logging.log4j.core.appender.FileManager$FileManagerFactory@4d826d77无法为${sys:logFileName}创建${sys: logFileName} with data org.apache.logging.log4j.core.appender.FileManager$FactoryData@61009542 java.lang.IllegalStateException: ManagerFactory org.apache.logging.log4j.core.appender.FileManager$FileManagerFactory@4d826d77无法为${sys创建管理器:使用数据org.apache.logging.log4j.core.appender.FileManager$FactoryData@61009542的logFileName}

2022-01-18 15:05:26,699主要错误无法在类org.apache.logging.log4j.core.appender.FileAppender中调用工厂方法,用于元素文件: java.lang.IllegalStateException:未为类org.apache.logging.log4j.core.appender.FileAppender找到工厂方法java.lang.IllegalStateException:未为org.apache.logging.log4j.core.appender.FileAppender类调用工厂方法

这很奇怪,因为我将其更新到的路径是正确的,生成的日志将与所需目录中的所有信息一起输出。在initializeLoggers()之前也没有日志记录。任何帮助都将不胜感激!I referenced this post for the properties updating solution

EN

回答 1

Stack Overflow用户

发布于 2022-01-19 16:52:18

在用文件名值初始化记录器之前,代码正在调用LogManager.getLoggers()。我只是将默认值设置为so,代码现在运行时没有错误:

代码语言:javascript
复制
<File name="LogFileAppender" fileName="${sys:logFileName:-default}" append="false">
    <PatternLayout>
        <Pattern>%d [%t] %p - %m%n</Pattern>
    </PatternLayout>
</File>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70763526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档