2
我正在從AnyPoint Studio運行鍼對Mule應用程序的測試,並使用JUnit編寫測試代碼。我需要能夠很好地將日誌數據捕獲到每個測試日誌文件中...Mule ESB和Log 4J2路由附加器
我創建了一個路由附加程序,它可以很好地用於直接測試我們的日誌記錄組件(使用AnyPoint 5.0附帶的log4j2。 1)。
<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns:xi="http://www.w3.org/2001/XInclude">
<properties>
<property name="MULE_HOME">E:/</property>
<property name="APP_NAME">A_MULE_APP</property>
</properties>
<Appenders>
<Console name="stdout" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</Console>
<RollingFile name="MyLog2"
fileName="${MULE_HOME}/logs/applogs/LOG-${A_MULE_APP}.log"
filePattern="${MULE_HOME}/logs/applogs/LOG-${A_MULE_APP}_%d{yyyyMMdd}.log">
<PatternLayout pattern="%m%n" />
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
<!-- Messages from standard java or mule logging -->
<RollingFile name="other"
fileName="${MULE_HOME}/logs/applogs/SYS-${A_MULE_APP}.log"
filePattern="${MULE_HOME}/logs/applogs/SYS-${A_MULE_APP}_%d{yyyyMMdd}.log">
<PatternLayout pattern="%-5p %d [%t] %c: %m%n" />
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</RollingFile>
<Routing name="RoutingAppender">
<Routes pattern="$${ctx:filename}">
<Route>
<File name="File"
fileName="${ctx:filename}"
filePattern="${ctx:filename}.%i.log.gz">
<PatternLayout pattern="%m%n" />
<Policies>
<TimeBasedTriggeringPolicy />
</Policies>
</File>
</Route>
<Route ref="MyLog2" key="${ctx:filename}"/>
</Routes>
</Routing>
</Appenders>
<Loggers>
<Logger name="com.mylogging" level="INFO" additivity="false">
<AppenderRef ref="stdout" />
<AppenderRef ref="RoutingAppender" />
</Logger>
<Root level="INFO">
<AppenderRef ref="stdout" />
<AppenderRef ref="other" />
</Root>
</Loggers>
</Configuration>
在我的測試代碼中,我使用
ThreadContext.put("ctx", "filename");
如果我所說的記錄儀從我的測試代碼
logger.info("this is some info");
然後將正確的信息發送到正確的文件..卜什麼我需要的是我們的日誌組件將這些信息寫入文件..
感謝您的任何幫助!
聽起來像您的解決方案工作。你是否說你不想進行任何日誌配置的測試(比如ThreadContext屬性)? – rewolf 2015-02-19 00:26:55
嗨!感謝您的迴應,是的,從AnyPoint Studio開始,只要MULE應用程序沒有啓動,它就會工作。一旦發生這種情況,ThreadContext對於正在運行的應用程序無效......我確實有一個解決方案,儘管... – thomas 2015-02-19 19:23:13
我在log4j2 xml中創建了兩個附加屬性,稱爲logfile和logfiledirectory,然後將xml加載到一個DOM - 用我想要的那些替換這些值,然後重新加載log4j2.xml謝謝! – thomas 2015-02-19 19:24:04