骡子 Log4j2 配置
Mule Log4j2 configuration
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="log-path">${MULE_HOME}/logs/sfdc</Property>
</Properties>
<Appenders>
<Console name="console-log" target="SYSTEM_OUT">
<PatternLayout
pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
<RollingFile name="info-log" fileName="${log-path}/sfdc-info.log"
filePattern="${log-path}/sfdc-info-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
<RollingFile name="trace-log" fileName="${log-path}/sfdc-trace.log"
filePattern="${log-path}/sfdc-trace-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
<RollingFile name="error-log" fileName="${log-path}/sfdc-error.log"
filePattern="${log-path}/sfdc-error-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<AsyncLogger name="org.apache" level="WARN"/>
<AsyncLogger name="org.springframework.beans.factory" level="WARN"/>
<AsyncLogger name="org.mule" level="INFO"/>
<AsyncLogger name="com.mulesoft" level="INFO"/>
<Logger name="com.test" level="info" additivity="false">
<appender-ref ref="info-log" level="info" />
<appender-ref ref="trace-log" level="debug" />
<appender-ref ref="error-log" level="error" />
<appender-ref ref="console-log" level="debug" />
</Logger>
<Root level="info" additivity="false">
<AppenderRef ref="info-log" />
</Root>
</Loggers>
</Configuration>
在 mule-app.properties 中指定 MULE_HOME=C:/sfproject/test
我面临的问题是它没有从 mule-app.properties 获取路径 ${MULE_HOME} 位置,但它会在项目的主位置下创建一个目录(MULE_HOME=C:/sfproject/) 作为 ${MULE_HOME}/logs 在我的本地目录中。我希望所有日志文件都应该放在 C:/sfproject/test/logs 目录下。
当我在服务器中部署相同内容时(在 mule-app.properties 中注释了 mule_home 路径,因为它不是必需的,它应该指向服务器位置然后是日志目录),在下面没有创建日志文件servers/logs目录。
EDIT:
根据下面给出的 Ryan 回答,要在 anypoint studio 中本地工作,右键单击项目->运行 as->运行 配置->环境->新建->名称(MULE_HOME)->Value(c:/project/test)->ok->apply->运行.
尝试使用 env
前缀查找环境变量:
${env:MULE_HOME}
https://logging.apache.org/log4j/2.0/manual/lookups.html#EnvironmentLookup
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Properties>
<Property name="log-path">${MULE_HOME}/logs/sfdc</Property>
</Properties>
<Appenders>
<Console name="console-log" target="SYSTEM_OUT">
<PatternLayout
pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" />
</Console>
<RollingFile name="info-log" fileName="${log-path}/sfdc-info.log"
filePattern="${log-path}/sfdc-info-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
<RollingFile name="trace-log" fileName="${log-path}/sfdc-trace.log"
filePattern="${log-path}/sfdc-trace-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
<RollingFile name="error-log" fileName="${log-path}/sfdc-error.log"
filePattern="${log-path}/sfdc-error-%d{yyyy-MM-dd}.log">
<PatternLayout>
<pattern>[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
</pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<AsyncLogger name="org.apache" level="WARN"/>
<AsyncLogger name="org.springframework.beans.factory" level="WARN"/>
<AsyncLogger name="org.mule" level="INFO"/>
<AsyncLogger name="com.mulesoft" level="INFO"/>
<Logger name="com.test" level="info" additivity="false">
<appender-ref ref="info-log" level="info" />
<appender-ref ref="trace-log" level="debug" />
<appender-ref ref="error-log" level="error" />
<appender-ref ref="console-log" level="debug" />
</Logger>
<Root level="info" additivity="false">
<AppenderRef ref="info-log" />
</Root>
</Loggers>
</Configuration>
在 mule-app.properties 中指定 MULE_HOME=C:/sfproject/test
我面临的问题是它没有从 mule-app.properties 获取路径 ${MULE_HOME} 位置,但它会在项目的主位置下创建一个目录(MULE_HOME=C:/sfproject/) 作为 ${MULE_HOME}/logs 在我的本地目录中。我希望所有日志文件都应该放在 C:/sfproject/test/logs 目录下。
当我在服务器中部署相同内容时(在 mule-app.properties 中注释了 mule_home 路径,因为它不是必需的,它应该指向服务器位置然后是日志目录),在下面没有创建日志文件servers/logs目录。
EDIT:
根据下面给出的 Ryan 回答,要在 anypoint studio 中本地工作,右键单击项目->运行 as->运行 配置->环境->新建->名称(MULE_HOME)->Value(c:/project/test)->ok->apply->运行.
尝试使用 env
前缀查找环境变量:
${env:MULE_HOME}
https://logging.apache.org/log4j/2.0/manual/lookups.html#EnvironmentLookup