【问题标题】:Custom log file name in mule using log4j使用 log4j 在 mule 中自定义日志文件名
【发布时间】:2015-11-19 20:01:50
【问题描述】:

我正在尝试通过修改 log4j.xml 以具有适当的附加程序来更改 mule 生成的日志文件名。

这是来自log4j.xml的sn-p

 <RollingFile name="Rolling-Async-Perf" fileName="/usr/local/mule/logs/${app_name}.log"
            filePattern="./logs/${date:yyyy-MM}/perf-%d{yyyy-MM-dd}-%i.log.gz"  immediateFlush="false">

这是我在加载与log4j.xml相关的属性的类中设置application_name的值的方法

System.setProperty("app_name", "AppName");

但是,生成的文件名称为 ${app_name}.log 而不是 AppName.log

关于如何让 mule 根据 mule 中的自定义属性获取文件名有什么想法吗?

【问题讨论】:

    标签: java logging log4j mule log4j2


    【解决方案1】:

    两个选项是:

    1) 在 MULE_HOME/conf/wrapper.conf 文件中添加一个属性,例如:

    wrapper.java.additional.15=-Dapp_name=AppName
    

    或 2) 在 log4j2.xml 文件 example here 的 Configuration 元素内:

    <Properties>
      <Property name="app_name">AppName</Property>
    </Properties>
    

    【讨论】:

    • 我目前正在这样做,但它不适合我。我在同一个骡子容器上有多个应用程序,只有一个 wrapper.conf 和一个 log4j.xml 文件。为此,我想动态注入app-name
    • 什么不起作用?每次部署时不能为每个应用程序添加一个变量吗?
    • 所有服务将同时部署在一起。就一个例子而言。假设有 3 个应用程序的名称为 appAappBappC。我想从appA 获取日志到appA.logappB->appB.logetc。我必须在 wrapper.conflog4j2.xml 中提供什么值来代替 AppName ?因为容器上只有一个。
    猜你喜欢
    • 2018-03-24
    • 2010-09-10
    • 2018-10-22
    • 2014-11-17
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    相关资源
    最近更新 更多