Logging
Java
主なロギング・Facadeライブラリ
Commons Logging
SLF4J
主なロギング・ライブラリ
Java Logging API(java.util.logging)
Log4J
Logback
★Commons Logging + Log4J 一般
必要なライブラリファイル
・commons-logging-xxx.jar
・log4j-xxx.jar
必要な設定ファイル
・commons-logging.properties
・log4j.properties
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
private static Log LOG = LogFactory.getLog(XXX.class);
LOG.trace("aaa");
LOG.debug("aaa"); // 開発時
LOG.info("aaa"); // 運用時
LOG.warn("aaa");
LOG.error("aaa");
LOG.fatal("aaa");
log4j.properties
log4j.rootLogger=DEBUG,stdout,logout #DEBUG、INFO、WARN、ERROR、FATAL
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=-%d{yyyy-MM-dd HH:mm:ss,SSS}%c - %m%n
log4j.appender.logout=org.apache.log4j.RollingFileAppender
log4j.appender.logout.File=log.txt
log4j.appender.logout.MaxFileSize=500KB
log4j.appender.logout.MaxBackupIndex=1
log4j.appender.logout.layout=org.apache.log4j.PatternLayout
log4j.appender.logout.layout.ConversionPattern=-%d{yyyy-MM-dd HH:mm:ss,SSS} - %c{1} - %m%n
ちなみに、Log4jのみの場合
import org.apache.log4j.Logger;
private static final Logger LOG = Logger.getLogger(XXX.class);
LOG.warn("aaa");
...
★SLF4J + Log4J
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>
if (logger.isDebugEnabled()) {
logger.debug("id: " + id + " name: " + name); //Log4J
logger.debug("id: {} name : {} ", id, name); //SLF4J
}
★SLF4J + LogBack 改良
必要なライブラリファイル
・slf4j-api-xxx.jar
・logback-core-xxx.jar
・logback-classic-xxx.jar
必要な設定ファイル
・src/main/resources/logback.xml
・src/test/resources/logback-test.xml
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
</dependency>
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static Logger LOG = LoggerFactory.getLogger(XXX.class);
LOG.trace("aaa");
LOG.debug("aaa");
LOG.info("aaa");
LOG.warn("aaa");
LOG.error("aaa");
LOG.off("aaa");
logback.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>MyLog.log</file>
<layout class="ch.qos.logback.classic.PatternLayout">
<Pattern>
%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
</Pattern>
</layout>
</appender>
<logger name="com.xxx" level="TRACE" />
<root level="debug">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE" />
</root>
</configuration>
★自作ログ
public class LogUtil {
private static Logger logger;
private static LogUtil instance = new LogUtil();
private LogUtil(){ }
public static LogUtil getInstance(Class<?> cls) {
logger = LoggerFactory.getLogger(cls);
return instance;
}
// info, warn, errorも同様
public void debug(String msg) {
logger.debug(msg);
}
}
//利用側
private LogUtil logUtil = LogUtil.getInstance(this.getClass());
C#
★log4netでisDebugEnabledがfalseになる問題
log4net.LogManager.GetLogger()
解決方法:
AssemblyInfo.cs
[assembly: log4net.Config.XmlConfigurator(Watch = true)]を追加
★ElasticSearch
https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html
インストール
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.list
sudo apt-get update && sudo apt-get install elasticsearch
起動
sudo /etc/init.d/elasticsearch start
確認
localhost:9200/item/_search
localhost:9200/item/_mapping
localhost:9200/item/simple/_search
★ELK
Elasticsearch – a distributed indexing and search platform
>Provide a REST interface on top of a fancy distributed, highly available full text and semi-structured text searching system.
Logstash – log aggregator and processor
>Take log feeds from lots of different sources, filter and mutate them, and output them somewhere else.
Kibana – web based interactive visualization and query tool
>Explore the raw data and turn it into fancy aggregate charts and build dashboards.
★EKK(Amazon Elasticsearch Service, Amazon Kinesis, Kibana)