エラーãƒã‚°ã‚’記録ã™ã‚‹ãŸã‚ã«ã€Javaã§åºƒã使用ã•れるãƒã‚°ãƒ©ã‚¤ãƒ–ラリã®ä¸€ä¾‹ã¨ã—ã¦ã€Log4j2を挙ã’ã¦ã¿ã¾ã™ã€‚以下ã¯ã€Log4j2を使用ã—ã¦ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’記録ã™ã‚‹ç°¡å˜ãªãƒ—ãƒã‚°ãƒ©ãƒ ã®è§£ç”例ã§ã™ã€‚
Log4j2ã®è¨å®š
ã¾ãšã€Log4j2ã®è¨å®šãƒ•ァイル(log4j2.xml)を用æ„ã—ã¾ã™ã€‚ã“ã®ãƒ•ァイルã¯ã‚¯ãƒ©ã‚¹ãƒ‘スã«é…ç½®ã•れる必è¦ãŒã‚りã¾ã™ã€‚
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="File" fileName="error.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<Root level="error">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
Javaプãƒã‚°ãƒ©ãƒ
次ã«ã€Log4j2を使用ã—ã¦ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’記録ã™ã‚‹Javaプãƒã‚°ãƒ©ãƒ を作æˆã—ã¾ã™ã€‚
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class ErrorLoggingExample {
private static final Logger logger = LogManager.getLogger(ErrorLoggingExample.class);
public static void main(String[] args) {
try {
// 例外ãŒç™ºç”Ÿã™ã‚‹ãƒ¡ã‚½ãƒƒãƒ‰ã‚’呼ã³å‡ºã™
simulateError();
} catch (Exception e) {
// エラーãƒã‚°ã«ä¾‹å¤–æƒ…å ±ã‚’è¨˜éŒ²ã™ã‚‹
logger.error("エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ", e);
}
}
static void simulateError() throws Exception {
// 例外を発生ã•ã›ã‚‹
throw new Exception("ã“れã¯ã‚µãƒ³ãƒ—ルエラーã§ã™ã€‚");
}
}
ã“ã®ãƒ—ãƒã‚°ãƒ©ãƒ ã§ã¯ã€Log4j2を使用ã—ã¦ã‚¨ãƒ©ãƒ¼ãƒã‚°ã‚’コンソールã¨ãƒ•ァイルã«è¨˜éŒ²ã—ã¦ã„ã¾ã™ã€‚logger.error("エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ", e); ã®éƒ¨åˆ†ã§ã€ã‚¨ãƒ©ãƒ¼ãƒã‚°ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã¨ä¾‹å¤–æƒ…å ±ã‚’è¨˜éŒ²ã—ã¦ã„ã¾ã™ã€‚エラーãƒã‚°ã®å‡ºåŠ›å…ˆã‚„ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã¯è¨å®šãƒ•ァイルã§èª¿æ•´å¯èƒ½ã§ã™ã€‚
Log4j2
Log4j2(Log4jã®å¾Œç¶™ãƒãƒ¼ã‚¸ãƒ§ãƒ³ï¼‰ã¯ã€Javaã®ãƒã‚®ãƒ³ã‚°ãƒ•レームワークã§ã‚りã€åºƒã使用ã•れã¦ã„ã¾ã™ã€‚以下ã«ã€Log4j2ã®ä¸»ãªç‰¹å¾´ã¨ä½¿ç”¨æ–¹æ³•を解説ã—ã¾ã™ã€‚
主ãªç‰¹å¾´:
- 柔軟ãªè¨å®š: Log4j2ã¯æŸ”è»Ÿã§æ§‹æˆå¯èƒ½ãªãƒã‚°è¨å®šã‚’æä¾›ã—ã¾ã™ã€‚XMLã€JSONã€ãƒ—ãƒãƒ‘ティファイルãªã©ã€è¤‡æ•°ã®è¨å®šãƒ•ァイルフォーマットをサãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚
- プãƒãƒ€ã‚¯ã‚·ãƒ§ãƒ³ãƒ¬ãƒ‡ã‚£: é«˜åº¦ãªæ©Ÿèƒ½ã‚„性能å‘上ãŒå›³ã‚‰ã‚Œã¦ãŠã‚Šã€å¤§è¦æ¨¡ãªãƒ—ãƒãƒ€ã‚¯ã‚·ãƒ§ãƒ³ç’°å¢ƒã§ä½¿ç”¨ã•れるã“ã¨ãŒä¸€èˆ¬çš„ã§ã™ã€‚
- ãƒã‚°ãƒ¬ãƒ™ãƒ«: デãƒãƒƒã‚°ã€æƒ…å ±ã€è¦å‘Šã€ã‚¨ãƒ©ãƒ¼ãªã©ã®ç•°ãªã‚‹ãƒã‚°ãƒ¬ãƒ™ãƒ«ã‚’サãƒãƒ¼ãƒˆã—ã€å¿…è¦ã«å¿œã˜ã¦è©³ç´°ãªãƒã‚°ã‚’å–å¾—ã§ãã¾ã™ã€‚
- アペンダー: ãƒã‚°ã‚’ã©ã“ã«å‡ºåŠ›ã™ã‚‹ã‹ã‚’制御ã™ã‚‹ãŸã‚ã«ã€ã‚¢ãƒšãƒ³ãƒ€ãƒ¼ãŒä½¿ç”¨ã•れã¾ã™ã€‚コンソールã€ãƒ•ァイルã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãªã©ã¸ã®å‡ºåŠ›ãŒã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã™ã€‚
- ãƒã‚¬ãƒ¼éšŽå±¤: ãƒã‚®ãƒ³ã‚°éšŽå±¤ã‚’æŒã¡ã€ç‰¹å®šã®ã‚¯ãƒ©ã‚¹ã‚„パッケージã ã‘ã§ãªãã€è¦ªéšŽå±¤å…¨ä½“ã«å¯¾ã—ã¦ã‚‚ãƒã‚°ã®è¨å®šãŒã§ãã¾ã™ã€‚
- éžåŒæœŸãƒã‚°å‡ºåŠ›: Log4j2ã§ã¯éžåŒæœŸãƒã‚°å‡ºåŠ›ãŒã‚µãƒãƒ¼ãƒˆã•れã¦ãŠã‚Šã€é«˜ã„パフォーマンスを発æ®ã—ã¾ã™ã€‚
使用方法:
ライブラリã®è¿½åŠ : Mavenã‚„Gradleãªã©ã®ãƒ“ルドツールを使用ã—ã¦ã€ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã«Log4j2ã®ä¾å˜é–¢ä¿‚ã‚’è¿½åŠ ã—ã¾ã™ã€‚
Mavenã®å ´åˆ:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.x.x</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.x.x</version>
</dependency>
è¨å®šãƒ•ァイルã®ä½œæˆ: Log4j2ã®è¨å®šãƒ•ァイルを作æˆã—ã¾ã™ã€‚ã“れã¯é€šå¸¸ã€log4j2.xmlã‚„log4j2.jsonãªã©ã®åå‰ã§ãƒ—ãƒã‚¸ã‚§ã‚¯ãƒˆã®ã‚¯ãƒ©ã‚¹ãƒ‘スã«é…ç½®ã•れã¾ã™ã€‚
Loggerã®å–å¾—: Loggerを使用ã—ã¦ãƒã‚°ã‚’記録ã—ã¾ã™ã€‚Loggerã¯LogManager.getLogger()メソッドã§å–å¾—ã—ã¾ã™ã€‚
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class MyClass {
private static final Logger logger = LogManager.getLogger(MyClass.class);
public void doSomething() {
logger.debug("Debugメッセージ");
logger.info("Infoメッセージ");
logger.warn("Warnメッセージ");
logger.error("Errorメッセージ");
}
}
ãƒã‚°ã®å‡ºåŠ›: アプリケーションã§logger.debug()ã€logger.info()ã€logger.warn()ã€logger.error()ãªã©ã®ãƒ¡ã‚½ãƒƒãƒ‰ã‚’使用ã—ã¦ãƒã‚°ã‚’出力ã—ã¾ã™ã€‚
Log4j2ã¯éžå¸¸ã«ãƒ‘ãƒ¯ãƒ•ãƒ«ã§æŸ”軟ãªãƒã‚®ãƒ³ã‚°ãƒ•レームワークã§ã‚りã€è¨å®šã‚ªãƒ—ションãŒè±Šå¯Œã§ã™ã€‚è©³ç´°ãªæƒ…å ±ã‚„ã‚«ã‚¹ã‚¿ãƒžã‚¤ã‚ºã®ãŸã‚ã®ã‚ªãƒ—ションã¯ã€å…¬å¼ã®ãƒ‰ã‚ュメントやãƒãƒ¥ãƒ¼ãƒˆãƒªã‚¢ãƒ«ã§ç¢ºèªã§ãã¾ã™ã€‚
「019 例外ã¨ä¾‹å¤–処ç†ã€å•題集リスト
🎯 実習ã§ç†è§£ã‚’æ·±ã‚よã†
ã“ã®å†…容ã«ã¤ã„ã¦JavaDrillã§å®Ÿéš›ã«æ‰‹ã‚’å‹•ã‹ã—ã¦å¦ç¿’ã§ãã¾ã™


コメント