当前位置: 首页 > 知识库问答 >
问题:

更新log4j2 appender fileName会导致FileManager java错误。伊奥。IOException:文件名、目录名或卷标语法不正确

闾丘炫明
2023-03-14

我有一个log4j2。我用来定义输出到的一些记录器的xml文件。日志文件。

<?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>

在. xml已经读入之后,我在java中为logger fileNames设置了完整路径。

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:26685主要错误文件管理器(${sys:logFileName})java。伊奥。IOException:文件名、目录名或卷标语法不正确。伊奥。IOException:文件名、目录名或卷标语法不正确

2022-01-18 15:05:26,693主错误无法为元素创建类型为类org.apache.logging.log4j.core.appender.FileAppender的插件File:java.lang.IllegalStateExcture: ManagerFactory[org.apache.logging.log4j.core.appender.FileManager$FileManagerFactory@4d826d77]无法为[${sys: logFileName}]创建管理器数据[org.apache.logging.log4j.core.appender.FileManager$FactoryData@61009542]java.lang.IllegalStateExcture: ManagerFactory[org.apache.logging.log4j.core.appender.FileManager$FileManagerFactory@4d826d77]无法为[${sys: logFileName}]创建具有数据[org.apache.logging.log4j.core.appender.FileManager$<-PLHD--3/>]

2022-01-18 15:05:26699主错误无法在类org中调用工厂方法。阿帕奇。登录中。log4j。果心阿佩德。元素文件的FileAppender:java。lang.IllegalStateException:找不到类org的工厂方法。阿帕奇。登录中。log4j。果心阿佩德。FileAppender java。lang.IllegalStateException:找不到类org的工厂方法。阿帕奇。登录中。log4j。果心阿佩德。文件追加器

这很奇怪,因为我更新它的路径是正确的,结果日志和里面的所有信息一起输出到所需的目录中。初始化日志记录()之前也不会发生日志记录。任何帮助将不胜感激!我引用了这篇文章的属性更新解决方案

共有1个答案

景鸿晖
2023-03-14

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

<File name="LogFileAppender" fileName="${sys:logFileName:-default}" append="false">
    <PatternLayout>
        <Pattern>%d [%t] %p - %m%n</Pattern>
    </PatternLayout>
</File>
 类似资料:
  • 我正在Spring MVC框架上构建一个web应用程序,并使用thymeleaf作为我的模板引擎。 在添加新的REST控制器之前,我有一个工作应用程序。现在抛出IOException JAVA伊奥。IOException:文件名、目录名或卷标语法不正确 只有当浏览器试图从我的taoC获取css、js或任何其他静态资源时才会发生这种情况onnection-servlet.xml.我的jetty和to

  • 我知道这可能很简单,但我解决不了。 我试图将一个文件从Java客户端上传到webdav服务器,这是我的代码片段 在创建o/p流时,我得到 JAVA伊奥。FileNotFoundException:https:\webdavserverurl\Uploads\abc。csv(文件名、目录名或卷标语法不正确) 为什么它会改变路径?我该如何修复它? 注: 这是一个请求。文件abc.csv正在服务器位置创

  • 问题内容: 我正在尝试使用以下代码复制文件: 对于某些用户,此异常的结果是: 文件名和目录名似乎正确。甚至在执行复制代码之前检查目录是否存在,文件名看起来像这样: 用户具有的写入权限,并且可以使用OS毫无问题地复制文件。 由于我无法访问计算机,因此这种情况仍在发生,并且无法在我自己的计算机上重现该问题,因此我向您寻求有关此异常原因的提示。 问题答案: 尝试此操作,因为它更需要调整targetPat

  • 最近刚刚退出expo,我正试图在android设备上运行我的应用程序。我按照说明进行了操作(可能是正确的),但是当我尝试运行我的应用程序时,我总是收到这个错误: 使用'- warning-mode all '来显示各个弃用警告。见https://docs . grad le . org/6 . 0 . 1/user guide/command _ line _ interface . html #

  • 警告:JKS密钥存储库使用专有格式。建议使用“keytool-importkeystore-srckeystore c:\users\hp.android\debug.keystore-destkeystore c:\users\hp.android\debug.keystore-deststoretype PKCS12”迁移到PKCS12,这是一种行业标准格式。 当我要迁移到PKCS12时,就会

  • 最初是gradle windows java。伊奥。IOException:CreateProcess error=206,文件名太长是一个很好的解决方案。然而,对于gradle 5: 失败于 gradle 5.0的合适修复方案是什么? 至少对我来说:https://github.com/viswaramamoorthy/gradle-util-plugins/在gradle 5.0上也会出现同样