[Java] Logging
ロギングとは?
システムの実行レコードにエラーが発生した場合は、デバッグ時に使用するために記録できます.
プログラミング時にログ・ファイルに記録されたコードを追加して、必要な情報がログに保持されるようにします.
ログを使用して、システムエラーをデバッグ、追跡し、パフォーマンスと問題を向上させます.
ログの保持が少なすぎると、正しいシステム状況を特定することが難しくなります.逆に、ログの保持が多すぎると、頻繁なファイルI/Oオーバーヘッドとログファイルのバックアップの問題が発生します.だからできるだけ彼を残さなければならない.
java.util.logging
java.util.ログ・レコードはjavaがデフォルトで提供するログ・パッケージで、ファイルまたはコンソール・ログにコンテンツを出力できます.
ログにはレベルがあり、ログパッケージが提供するログレベルはsevere、warning、info、config、fine、finer、finestです.
jre/lib/logging.propertiesファイルを編集することで、ログの出力ログレベルを変更できます.
上のjre/lib/logging.propertiesファイルのjava.util.logging.ConsoleHandler.出力ログレベルは、levelの値を変更することで変更できます.
👨🏻💻 Example Code
MyLogger.java
package ch11;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;
public class MyLogger {
Logger logger = Logger.getLogger("mylogger");
private static MyLogger instance = new MyLogger();
public static final String errorLog = "log.txt";
public static final String warningLog = "warning.txt";
public static final String fineLog = "fine.txt";
private FileHandler logFile = null;
private FileHandler warningFile = null;
private FileHandler fineFile = null;
private MyLogger(){
try {
logFile = new FileHandler(errorLog, true); //true를 하면 뒤에 이어서 log를 찍는다.
warningFile = new FileHandler(warningLog, true);
fineFile = new FileHandler(fineLog, true);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
logFile.setFormatter(new SimpleFormatter());
warningFile.setFormatter(new SimpleFormatter());
fineFile.setFormatter(new SimpleFormatter());
logger.setLevel(Level.ALL); // 모든 level을 다 찍겠다.
fineFile.setLevel(Level.FINE); // fine level부터 찍겠다.
warningFile.setLevel(Level.WARNING); // warning level부터 찍겠다.
logger.addHandler(logFile);
logger.addHandler(warningFile);
logger.addHandler(fineFile);
}
public static MyLogger getLogger(){
return instance;
}
public void log(String msg){
logger.finest(msg);
logger.finer(msg);
logger.fine(msg);
logger.config(msg);
logger.info(msg);
logger.warning(msg);
logger.severe(msg);
}
public void fine(String msg){
logger.fine(msg);
}
public void warning(String msg){
logger.warning(msg);
}
}
LoggerTest.javapackage ch11;
public class LoggerTest {
public static void main(String[] args) {
MyLogger myLogger = MyLogger.getLogger();
myLogger.log("test");
}
}
Result
txtファイルに保存されたログ結果
次の結果から、出力範囲はログ出力の範囲に依存することがわかります.
コンソールのログ結果
Reference
Reference
この問題について([Java] Logging), 我々は、より多くの情報をここで見つけました https://velog.io/@seongwon97/Java-Loggingテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol