0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Javaをサーバで実行する際にLoggerで詳細なエラーを表示する

Last updated at Posted at 2019-07-22

#症状
「サーバで実行1」する際、Loggerを使ってコンソールに出力すると、「構成」レベル以下が表示されなかった。

#結論

  • 出力先をファイルにする。コンソールに出力するのは諦めた。
  • FileHandlersetLevel(Level.ALL)だけでなくLoggersetLevel(Level.ALL)も設定する。

#環境
Eclipse 2019-03 (4.11.0)
Tomcat 9
Java 11
macOS 10.13.6

#コメント
コンソールに出力するには設定ファイルがいくつかあるみたい。記事[1]の通りにやったら解決できたが、Formatterをオーバーライドして使っていたので、設定ファイルを使うやり方は面倒。そこでコンソールに出力するのを諦めてファイルに出力するようにした。

ログファイルを相対パスで指定するときは注意[2]

LoggersetLevel()のデフォルト値はLevel.INFO(情報)になっているみたい。ちゃんと設定してあげよう。

#ソースコード

Log.java
public class Log {
	private static final String DEBUG_FILE = "log/test.log";
	private static final Level DEBUG_LEVEL = Level.FINER;
	public static final Logger logger = Logger.getLogger("Test");

	public Log() throws SecurityException, IOException {
		
		logger.setLevel(Level.ALL);

		FileHandler debugHandler = new FileHandler(DEBUG_FILE, APPEND);
		debugHandler.setLevel(DEBUG_LEVEL);
		debugHandler.setFormatter(new MyFormatter());
		logger.addHandler(debugHandler);

		logger.setUseParentHandlers(false);

		test();
	}

	private static void test() {
		File file = new File(DEBUG_FILE);
        if (file.exists()) {
            System.out.println("logfile: " + file.getAbsolutePath());
        } else {
            System.out.println("logfile is not exist");
        }
		logger.finest("log test: FINEST");
		logger.finer("log test: FINER");
		logger.fine("log test: FINE");
		logger.config("log test: CONFIG");
		logger.info("log test: INFO");
		logger.warning("log test: WARNING");
		logger.severe("log test: SEVERE");
	}
}

ちなみにMyFormatterクラスはjava.util.logging.Formatterを継承した自作クラスである。

使い方は、

new Log();

で初期化して、ログを出力したい場所で

Log.logger.fine("ログメッセージ");

ってする。

#参考
[1] TomcatとEclipseとログ https://qiita.com/utisam/items/e725ccff4062f3078ad9
[2] Eclipse上でTomcatを走らせるときの相対パス https://qiita.com/milmilk/private/99102afbb678b8e82c4c
[3] 【Java入門】Loggerの使い方(ログレベル、出力先の設定も解説) https://www.sejuku.net/blog/61048
[4] java.util.loggingの使い方 https://qiita.com/Qui/items/40077ce9e33738dd3914

  1. Eclipse+Tomcatアプリ https://searchman.info/java_eclipse/1100.html

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?