
Java標準APIのロガーは、1.4から使えるようになった。
// 当クラスと同じパッケージ内からプロパティファイル読み込み
try {
LogManager.getLogManager().readConfiguration(this.getClass().getResourceAsStream("logging.properties"));
} catch (SecurityException e) {
throw new RuntimeException(e);
} catch (IOException e) {
throw new RuntimeException(e);
}
// ログ出力
Logger logger = Logger.getLogger(JavaLog01.class.getName());
logger.finest("FINESTメッセージです。");
logger.finer("FINERメッセージです。");
logger.fine("FINEメッセージです。");
logger.config("CONFIGメッセージです。");
logger.info("INFOメッセージです。");
logger.warning("WARNINGメッセージです。");
logger.severe("SEVEREメッセージです。");
logging.propertiesの例
############################################################ # Default Logging Configuration File # # You can use a different file by specifying a filename # with the java.util.logging.config.file system property. # For example java -Djava.util.logging.config.file=myfile ############################################################ ############################################################ # Global properties ############################################################ # "handlers" specifies a comma separated list of log Handler # classes. These handlers will be installed during VM startup. # Note that these classes must be on the system classpath. # By default we only configure a ConsoleHandler, which will only # show messages at the INFO and above levels. handlers= java.util.logging.ConsoleHandler # To also add the FileHandler, use the following line instead. #handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler # Default global logging level. # This specifies which kinds of events are logged across # all loggers. For any given facility this global level # can be overriden by a facility specific level # Note that the ConsoleHandler also has a separate level # setting to limit messages printed to the console. .level= INFO ############################################################ # Handler specific properties. # Describes specific configuration info for Handlers. ############################################################ # default file output is in user's home directory. java.util.logging.FileHandler.pattern = %h/java%u.log java.util.logging.FileHandler.limit = 50000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter # Limit the message that are printed on the console to INFO and above. #java.util.logging.ConsoleHandler.level = INFO java.util.logging.ConsoleHandler.level = ALL java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter # Example to customize the SimpleFormatter output format # to print one-line log message like this: # <level>: <log message> [<date/time>] # #----------------------------------------------------------- # Pleiades Custom: Enabled one line format. #----------------------------------------------------------- java.util.logging.SimpleFormatter.format=%4$s: %5$s [%1$tc]%n org.apache.tomcat.util.digester.Digester.level = SEVERE ############################################################ # Facility specific properties. # Provides extra control for each logger. ############################################################ # For example, set the com.xyz.foo logger to only log SEVERE # messages: com.xyz.foo.level = SEVERE com.tryjava.level = ALL
参考
ログ出力する。
// Log4j2では、Logger#getLoggerメソッドがなくなった。
Logger logger = LogManager.getLogger(Log4j01.class);
logger.trace("TRACEログです。");
logger.debug("DEBUGログです。");
logger.info("INFOログです。");
logger.warn("WARNログです。");
logger.error("ERRORログです。");
logger.fatal("FATALログです。");
// Log4j2では、パラメータの埋め込みが使えるようになった。
logger.info("Hello, {}!", "World");
Apache Log4j 1.2で使用するlog4j.properties
# Log4j 1.2 プロパティファイル
# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=INFO, A1, FILE1
# A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss.SSS} [%t] %-5p %c{1} - %m%n
# FILE1
log4j.appender.FILE1=org.apache.log4j.RollingFileAppender
log4j.appender.FILE1.File=./work/log4j.log
log4j.appender.FILE1.MaxFileSize=100KB
log4j.appender.FILE1.MaxBackupIndex=3
log4j.appender.FILE1.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
# Print only messages of level WARN or above in the package com.foo.
log4j.logger.com.foo=WARN
log4j.logger.com.tryjava=ALL
Apache Log4j 2.xで使用するlog4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<!-- コンソール出力 -->
<Console name="Console" target="SYSTEM_OUT">
<!-- <PatternLayout pattern="%d{yyy/MM/dd HH:mm:ss.SSS} [%t] %-5level
%logger{36} - %msg%n"/> <PatternLayout pattern="%d{yyy/MM/dd HH:mm:ss.SSS}
%-5level - %msg%n" /> -->
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{1} - %msg%n" />
</Console>
<!-- ファイル出力 -->
<RollingFile name="File" fileName="./work/log4j.log"
filePattern="./work/log4j-%d{yyyy-MM-dd}-%i.zip">
<PatternLayout
pattern="%d{yyy/MM/dd HH:mm:ss.SSS} [%t] %-5level %logger - %msg%n" />
<Policies>
<!-- JVM開始時にログファイル切り替え -->
<OnStartupTriggeringPolicy />
<!-- ファイルサイズで切り替え -->
<SizeBasedTriggeringPolicy size="20MB" />
<!-- 日付が変わったときに切り替え -->
<TimeBasedTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="3" />
</RollingFile>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console" />
</Root>
<Logger name="com.tryjava" level="ALL" additivity="false">
<AppenderRef ref="Console" />
<AppenderRef ref="File" />
</Logger>
</Loggers>
</Configuration>
Apache Log4j 1.2 の参考
Apache Log4j 2.x の参考
Apache Commons Loggingは、汎用インターフェースを提供するのみ。 実際のログ出力は、Log4jやJava標準APIなどを使用する。
Apache Commons Loggingが使用するログ実装は、次の優先順序で選択される。
Log4jで提供しているlog4j-jclをクラスパスに通すと、Log4j2も使用できるらしい。
Log log = LogFactory.getLog(this.getClass());
log.trace("TRACEログです。");
log.debug("DEBUGログです。");
log.info("INFOログです。");
log.warn("WARNログです。");
log.error("ERRORログです。");
log.fatal("FATALログです。");
参考
[PageInfo]
LastUpdate: 2016-05-31 21:12:50, ModifiedBy: kurukuru-papa
[Permissions]
view:all, edit:admins, delete/config:admins