掲題のLog4j2を用いて、通常レベル(INFO)とエラーレベル(ERROR)の2つのファイル
を取得したいと思っています。
【開発環境】
OS:Windows7
IDE:Eclipse(ver.4.3)
言語:jdk 1.7
ロギング:Log4j2(Ver.2.8.2)
【JAVAソース】
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class testApp {
/** Log4j2 Logger Instance */
private static Logger log = LogManager.getLogger();
public static void main( String[] args ) {
String s = null;
log.info( "My application..." );
if ( args != null && args.length > 0 ) {
s = args[ 0 ];
}
try {
log.debug( "Debug Message", s );
log.info( "Parsing integer: {}", s );
Integer.parseInt( s );
log.info( "success: parse integer" );
} catch ( NumberFormatException nfe ) {
log.error( "Exception caught: ", nfe );
}
System.exit( 0 ); }
}
【log4j2.xmlソース】
<?xml version="1.0" encoding="UTF-8"?> <configuration status="warn"> <Properties> <Property name="logHeaderFormat">[%d{yyyy/MM/dd HH:mm:ss.SSS}] [%t] [%-5p] %c(%F:%L)	%m%n%ex</Property> <Property name="logFolderName">G:\FTP\Mail\Log\</Property> <Property name="LogFilePattern">_%d{yyyy-MM-dd}.log</Property> </Properties> <Appenders> <Console name="console" target="SYSTEM_OUT"> <PatternLayout> <Pattern>${logHeaderFormat}</Pattern> </PatternLayout> </Console> <RollingFile name="normalLogFile" fileName="${logFolderName}Normal" filePattern="${logFolderName}Normal${LogFilePattern}"> <PatternLayout> <Pattern>${logHeaderFormat}</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy /> </Policies> </RollingFile> <RollingFile name="errorLogFile" fileName="${logFolderName}Error" filePattern="${logFolderName}Errorl${LogFilePattern}"> <PatternLayout> <Pattern>${logHeaderFormat}</Pattern> </PatternLayout> <Policies> <TimeBasedTriggeringPolicy /> </Policies> </RollingFile> </Appenders> <Loggers> <Root level="debug"> <AppenderRef ref="console" /> <AppenderRef ref="normalLogFile" /> </Root> <Logger name="jp.co.nrcsoft.mailsend2" level="error" additivity="true"> <AppenderRef ref="errorLogFile" /> </Logger> </Loggers> </configuration>【Eclipseコンソール・メッセージ】
[2017/07/31 18:03:00.870] [main] [ERROR] jp.co.nrcsoft.mailsend2.testApp(testApp.java:24) Exception caught:
java.lang.NumberFormatException: For input string: "Hellow Java World !!!"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at jp.co.nrcsoft.mailsend2.testApp.main(testApp.java:21)
【ご質問】
上記の「Eclipseコンソール・メッセージ」は、「normalLogFile」と「errorLogFile」に当然同じ内容が出力されていますが、
「normalLogFile」へ「NumberFormatException」をcatchするまでのdebugとinfoメッセージを出力させたいと考えております。
要するに、normalLogFileには、全ログ(debug)までを、errorLogFileには、errorのメッセージのみの内容を出力させたい
と思っております。
当該の方法では仕様上無理でしょうか、又、こうすれば出来そうなどございましたら、皆様のお知恵をお貸し下さいますよう
お願い申し上げます。
以上、宜しくお願い申し上げます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/01 01:04
2017/08/01 01:23
2017/08/01 03:04