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

动态Log4j2日志文件路径

白子默
2023-03-14

我想在Log4j2中设置一个目录。xml动态。

Log4j2。xml

<?xml version="1.0" encoding="UTF-8"?>    
    <Configuration status="WARN">
        <Appenders>
            <Console name="Console">
                <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
            </Console>

            <RollingFile name="MyFile" fileName="${sys:logDirectory}/app.log"
                         filePattern="${sys:logDirectory}/app-%d{MM-dd-yyyy}-%i.log">
                <PatternLayout>
                    <Pattern>%d %p %c [%t] %m%n</Pattern>
                </PatternLayout>
                <Policies>
                    <TimeBasedTriggeringPolicy/>
                    <SizeBasedTriggeringPolicy size="1 MB"/>
                </Policies>
                <DefaultRolloverStrategy max="2000"/>
            </RollingFile>

        </Appenders>

        <Loggers>
            <Root level="DEBUG">
                <appender-ref ref="Console" level="INFO"/>
                <appender-ref ref="MyFile" level="ERROR"/>
            </Root>
        </Loggers>
    </Configuration>

运行:

public static void main(final String[] args) 
{
    System.setProperty("log4j.logDirectory", "C:\\debug.log");
    org.apache.logging.log4j.core.LoggerContext ctx =
            (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
    ctx.reconfigure();
    log.error("TEST");
}

输出:

2017-03-15 18:20:27131主要错误
无法创建文件${sys:logDirectory}/app。记录java。伊奥。IOException:
文件名、目录名或驱动器名的语法错误
---编辑:德语中的原始错误消息是:--
(Dateinamen,Verzeichnisnamen或Datenträgerbezeichung ist falsch)
。。。

共有1个答案

鲜于德泽
2023-03-14

我试过了,但我发现如果我这么做,它对我有效;系统setProperty(“logDirectory”,“C:\debug.log”);

所以试着移除log4j。在配置语句中。系统setProperty(“log4j.logDirectory”,“C:\debug.log”);

 类似资料:
  • 问题内容: 我当前正在创建一个可以包含模块的系统(将它们视为插件),其中每个模块可以拥有自己的专用日志。 我想使用log4j2项目进行日志记录,但是文件附加器似乎有些麻烦。 主项目(整个模块的模块加载器和“核心”)应具有自己的日志文件,而模块应具有自己的日志文件(如)。 通过阅读有关追加程序的文档,我发现了该类,并且我将使用它。直到我发现不能简单地将追加器添加到由创建的默认记录器中。 LogMan

  • 我目前正在创建一个系统,可以有模块(把它们看作插件),其中每一个都可以有自己的日志,专用的。 我想使用log4j2项目进行日志记录,但我似乎在文件附加符方面遇到了一些麻烦。 主项目(模块加载器和整个事情的“核心”)应该有自己的日志文件,而模块应该有自己的日志文件(像)。 即使搜索也没有给我提供任何接近的解决方案,我找到的只是xml配置中预定义的文件日志--这不是我想要的。 感谢你的阅读;即使是最轻

  • 我已经在spring boot中使用log4j2完成了日志记录。我想从属性文件动态设置日志文件路径。我已经为此编写了下面的代码,但它工作得不好。 我的财产档案。属性代码如下所示 和我的日志文件log4j2。xml代码如下所示

  • 我希望由log4j2创建的日志文件在其文件名中包含日期模式,包括当前活动文件。也就是说,如果今天的日期是2016-12-15,我希望当前日志文件是lager-2016-12-15.log。当日期改变时,我希望创建一个名为lager-2016-12-16.log的新文件。 使用,我无法使当前活动日志文件的文件名中具有日期模式。我的log4j2.xml: 使用此配置,翻转时的复制被搞乱了。从fileN

  • 我有一个应用程序,其中包含许多在数据库中创建数据的组件。每个组件记录创建数据时所做的事情。有很多这样的组件,而且应用程序非常灵活,因此每次运行时不必总是执行相同的一组数据创建组件。 目前,所有内容都记录到一个文件中,这会生成一些开始变得不可管理的文件。我希望每个组件都可以登录到一个文件,该文件的名称描述了编写它的组件-应该登录到。 我见过的大多数解决方案似乎都假设不同的记录器是静态的,所以可以按名

  • 我有将日志保存到文件配置,但日志会附加到现有内容。我想创建总是新的文件。我怎么能那样做? 我的log4j2.xml: