• R/O
  • SSH

提交

標籤
無標籤

Frequently used words (click to add to your profile)

javac++androidlinuxc#objective-cqt誰得cocoawindowspythonrubyphpgameguibathyscaphec翻訳omegat計画中(planning stage)frameworktwittertestdombtronvb.netdirectxarduinopreviewerゲームエンジン

ログ出力先に全レベルのログを出力して、設定ファイルが期待通りかを確認するツール


Commit MetaInfo

修訂3b7dde09df502f0af1d80e8784ec4b4fc54f9bad (tree)
時間2022-01-23 01:10:23
作者kemono7h
Commiterkemono7h

Log Message

回数/待ち時間に対応。出力するログの見直し

Change Summary

差異

diff -r a1084d969d34 -r 3b7dde09df50 src/main/java/jp/nanah/logconfchk/LogConfigTester.java
--- a/src/main/java/jp/nanah/logconfchk/LogConfigTester.java Sun Jan 23 00:33:45 2022 +0900
+++ b/src/main/java/jp/nanah/logconfchk/LogConfigTester.java Sun Jan 23 01:10:23 2022 +0900
@@ -19,6 +19,14 @@
1919
2020 private static final Logger logger = LoggerFactory.getLogger(LogConfigTester.class);
2121
22+ /**
23+ * 指定のファイルまたはフォルダに含まれるloggerの設定ファイルを1つずつ読み込んで
24+ * その出力先に全レベルのログを出力する。
25+ *
26+ * @param path ロガの設定ファイルまたはフォルダ。フォルダはその階層のみ。
27+ * @param count ログ出力する件数。一定サイズでローテーションする場合に利用。
28+ * @param interval ログ1件を出した後に待つ秒数。指定時間になったらローテーションする場合、件数と組み合わせて使用。
29+ */
2230 public void logoutAll(String path, int count, int interval){
2331 File[] files = null;
2432
@@ -33,26 +41,34 @@
3341 loggerList.add(new LogbackLogger());
3442 loggerList.add(new Log4jLogger());
3543
36- //ファイル1つずつの環境にする
37- for (File f : files) {
38- try {
39- Document doc = loadXmlFile(f);
40-
41- if (doc == null) {
42- continue;
44+ for (int i=0; i<count; i++) {
45+ if (i > 0) {
46+ try {
47+ Thread.sleep(interval * 1000);
48+ } catch (InterruptedException e) {
49+ //ignore
4350 }
44-
45- for (BaseLogger bl : loggerList) {
46- if (bl.isTarget(doc)) {
47- bl.setConfigure(f);
48- bl.logging(f, doc);
51+ }
52+
53+ for (File f : files) {
54+ try {
55+ //ループ中に書き換えた設定ファイルが反映されるように毎回読み込む
56+ Document doc = loadXmlFile(f);
57+
58+ if (doc == null) {
59+ continue;
4960 }
61+
62+ for (BaseLogger bl : loggerList) {
63+ if (bl.isTarget(doc)) {
64+ bl.setConfigure(f);
65+ bl.logging(f, doc, i);
66+ }
67+ }
68+
69+ } catch (Throwable th) {
70+ logger.warn("処理異常発生", th);
5071 }
51- //List<String> lognames = getLoggerNames(file, doc); //setLoggingFile(doc);
52-
53- //loggingAll(file, doc, lognames);
54- } catch (Throwable th) {
55- logger.warn("処理異常発生", th);
5672 }
5773 }
5874 }
@@ -89,7 +105,7 @@
89105 * 起動引数
90106 * [0] ログ設定ファイルのあるフォルダまたはファイル
91107 * [1] 出力回数(省略可能)
92- * [2] 1回出力後の待ち時間(msec) (省略可能)
108+ * [2] 1回出力後の待ち時間(sec) (省略可能)
93109 * @param args
94110 */
95111 public static void main(String[] args){
@@ -97,7 +113,7 @@
97113 System.out.println("Argument is none!");
98114 System.out.println("java -jar logconfchk.jar [LogConfig.xml]");
99115 System.out.println("java -jar logconfchk.jar [LogConfig.xml] [count]");
100- System.out.println("java -jar logconfchk.jar [LogConfig.xml] [count] [interval(msec)]");
116+ System.out.println("java -jar logconfchk.jar [LogConfig.xml] [count] [interval(sec)]");
101117 return;
102118 }
103119 logger.info("=== START ===");
diff -r a1084d969d34 -r 3b7dde09df50 src/main/java/jp/nanah/logconfchk/output/BaseLogger.java
--- a/src/main/java/jp/nanah/logconfchk/output/BaseLogger.java Sun Jan 23 00:33:45 2022 +0900
+++ b/src/main/java/jp/nanah/logconfchk/output/BaseLogger.java Sun Jan 23 01:10:23 2022 +0900
@@ -25,7 +25,7 @@
2525 public void setConfigure(File file) {
2626 }
2727
28- public void logging(File file, Document doc) {
28+ public void logging(File file, Document doc, int count) {
2929 }
3030
3131 //以下はユーティリティメソッド的に使う。
diff -r a1084d969d34 -r 3b7dde09df50 src/main/java/jp/nanah/logconfchk/output/LogbackLogger.java
--- a/src/main/java/jp/nanah/logconfchk/output/LogbackLogger.java Sun Jan 23 00:33:45 2022 +0900
+++ b/src/main/java/jp/nanah/logconfchk/output/LogbackLogger.java Sun Jan 23 01:10:23 2022 +0900
@@ -20,23 +20,23 @@
2020 setConfigureForLogback(file);
2121 }
2222
23- public void logging(File file, Document doc) {
23+ public void logging(File file, Document doc, int count) {
2424 Exception warnEx = new RuntimeException("警告時の例外情報です。");
2525 Exception errorEx = new RuntimeException("異常時の例外情報です。");
2626 List<String> names = getLoggerNames(doc, "logger");
27- String baseMessage = "###[" + file.getName() + "]###";
27+ String configPath = "[" + file.getName() + "]";
2828
2929 for (String name : names) {
3030 if (name == null) {
3131 name = this.getClass().getCanonicalName();
3232 }
3333 Logger log = LoggerFactory.getLogger(name);
34-
35- log.trace("{}[{}][TRACE LEVEL]{}", baseMessage, name, "トレースログです");
36- log.debug("{}[{}][DEBUG LEVEL]{}", baseMessage, name, "デバッグログです");
37- log.info ("{}[{}][INFO LEVEL]{}", baseMessage, name, "情報ログです");
38- log.warn ("{}[{}][WARN LEVEL]{}", baseMessage, name, "警告ログです", warnEx);
39- log.error("{}[{}][ERROR LEVEL]{}", baseMessage, name, "異常ログです", errorEx);
34+ // ログメッセージを出力します [logback.xml][DEBUG][0][org.commons.lang3]
35+ log.trace("ログメッセージを出力します [{}][TRACE][{}][{}]", configPath, count, name);
36+ log.debug("ログメッセージを出力します [{}][DEBUG][{}][{}]", configPath, count, name);
37+ log.info ("ログメッセージを出力します [{}][INFO ][{}][{}]", configPath, count, name);
38+ log.warn ("ログメッセージを出力します [{}][WARN ][{}][{}]", configPath, count, name, warnEx);
39+ log.error("ログメッセージを出力します [{}][ERROR][{}][{}]", configPath, count, name, errorEx);
4040 }
4141 }
4242