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

我如何使用log4j,并多次使用带有动态文件名的附加符?

黄信厚
2023-03-14
<RollingFile name="MODULE" fileName="log/module-${ModuleName}.log" append="true" filePattern="log/module-${ModuleName}-%d{yyyy-MM-dd}_%i.log" >
    <PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
    <Policies>
        <OnStartupTriggeringPolicy />
        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        <SizeBasedTriggeringPolicy size="100MB"/>
    </Policies>
    <DefaultRolloverStrategy max="10"/>
</RollingFile>
<Logger name="MOD1" level="debug">
    <Properties>
        <Property name="ModuleName">MOD1</Property>
    </Properties>
    <appender-ref ref="MODULE"/>
</Logger>
<Logger name="MOD2" level="error">
    <Properties>
        <Property name="ModuleName">MOD2</Property>
    </Properties>
    <appender-ref ref="MODULE"/>
</Logger>
/log/module-MOD1.log <- Debug messages from MOD1
/log/module-MOD2.log <- Error messages from MOD2

谢谢你的帮助

共有1个答案

卢德惠
2023-03-14

只需添加另一个appender并连接每对loggerappender

例如:

...
<RollingFile name="MODULE1" fileName="./log/module1-${ModuleName}.log" append="true" filePattern="./log/module1-${ModuleName}-%d{yyyy-MM-dd}_%i.log" >
    <PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
    <Policies>
        <OnStartupTriggeringPolicy />
        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        <SizeBasedTriggeringPolicy size="100MB"/>
    </Policies>
    <DefaultRolloverStrategy max="10"/>
</RollingFile>

<RollingFile name="MODULE2" fileName="./log/module2-${ModuleName}.log" append="true" filePattern="./log/module2-${ModuleName}-%d{yyyy-MM-dd}_%i.log" >
    <PatternLayout pattern="%d{yyyy/MM/dd-HH:mm:ss} %-5p %C:%M:%L ~ %m%n"/>
    <Policies>
        <OnStartupTriggeringPolicy />
        <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
        <SizeBasedTriggeringPolicy size="100MB"/>
    </Policies>
    <DefaultRolloverStrategy max="10"/>
</RollingFile>
...

...
<Logger name="com.foo.bar.ClassName1" level="debug">
    <Properties>
        <Property name="ModuleName">MOD1</Property>
    </Properties>
    <appender-ref ref="MODULE1"/>
</Logger>
<Logger name="com.foo.bar.ClassName2" level="error">
    <Properties>
        <Property name="ModuleName">MOD2</Property>
    </Properties>
    <appender-ref ref="MODULE2"/>
</Logger>
...

有一个相同的问题,所以我也回答了那里。所以,请访问这里。

 类似资料:
  • 问题内容: 是否有可能在运行时使用MDC命名日志文件。 我有一个单独的Web应用程序,该应用程序同时使用tomcat docbase被不同的名称调用。因此,我需要为每个文件设置单独的日志文件。 问题答案: 这可以在Logback(Log4J的后继者)中完成。 Logback旨在作为流行的log4j项目的后继者,从log4j离开的地方接手。 请参阅文档筛选器 SiftingAppender在引用和配

  • 我不想使用推断架构和标题选项。唯一的方法是我应该读取一个只包含列标题的文件,并且应该动态地使用它来创建数据帧。 我使用Spark 2和来加载带有用户定义模式的单个csv文件,但我希望动态处理此问题,以便在我只提供模式文件的路径后,它将读取该路径并将其用作数据的标头,并使用模式文件中提供的模式将其转换为数据帧。 假设我提供的文件夹中包含2个文件。一个文件将只有数据,标头不是强制性的。第二个文件将具有

  • 问题内容: 设法将我的文件存储在一个文件夹中,但是没有文件扩展名。 有谁知道我将如何存储带有文件扩展名的文件? 问题答案: 从文档中:“ Multer不会为您添加任何文件扩展名,您的函数应返回带有文件扩展名的文件名。” 添加扩展名的方法如下: 我建议使用该属性来确定扩展名。例如: 更多信息:https://github.com/expressjs/multer

  • 文件名太复杂和随机,我无法使用api获取。所以我想使用saveAstextfile,因为文件名并不复杂且规则,但我不知道如何在同一目录中追加文件?感谢您抽出时间。

  • 我想创建单独的日志文件,一个用于信息,另一个用于调试,我正在使用下面的log4j.property文件,请建议如何修改不同文件中的两级日志记录, 我想请求请发送我更新的属性文件而不是给我搜索或探索的指针,因为我已经花了3-4个小时在Google和StackOverflow上搜索这个解决方案, 提前道谢。

  • 问题内容: 我正在尝试使用javascript动态加载css文件,并且不能使用任何其他js库(例如jQuery)。 css文件已加载,但我似乎无法获得回调来工作。下面是我正在使用的代码 使用以下代码添加脚本标签以加载js文件可以正常工作并触发回调: 我在这里做错什么了吗?还有其他方法可以帮助我实现这一目标吗? 问题答案: 不幸的是,大多数现代浏览器都不支持样式表的加载。我发现有一点谷歌搜索解决方案