java日志组件
来源:互联网 发布:java 代码单元测试 编辑:程序博客网 时间:2024/05/22 19:26
第0章:简介
(1)简单日志门面slf4j
1.SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志系统。
2.使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统。
3.SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。
4.SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现。 Logging API实现既可以选择直接实现SLF4J接的loging APIs如: NLOG4J、SimpleLogger。也可以通过SLF4J提供的API实现来开发相应的适配器如Log4jLoggerAdapter、JDK14LoggerAdapter。
5.参考网站:
官网:http://www.slf4j.org/
官方文档:http://www.slf4j.org/docs.html
开源中国:http://www.oschina.net/p/slf4j/
百度百科搜“slf4j”
(2)日志组件log4j
1.Log4j(log for java)是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等。
2.通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
3.参考网站:
官网:http://logging.apache.org/log4j/2.x/
官方文档:http://logging.apache.org/log4j/1.2/manual.html
开源中国:http://www.oschina.net/p/log4j
百度百科搜“log4j”
(3)日志组件logback
1.Logback是由log4j创始人设计的又一个开源日志组件。logback当前分成三个模块:logback-core,logback- classic和logback-access。logback-core是其它两个模块的基础模块。logback-classic是log4j的一个 改良版本。此外logback-classic完整实现SLF4J API使你可以很方便地更换成其它日志系统如log4j或JDK14 Logging。logback-access访问模块与Servlet容器集成提供通过Http来访问日志的功能。
2.logback比现有任何记录系统更快、占用资源更少,有时差距非常大。Logback-core附带了Joran,Joran是个强大的、通用的配置系统,你可以在自己的项目里使用Joran以获得巨大的作用。
3.参考网站:
官网:http://logback.qos.ch/
官方文档:http://logback.qos.ch/documentation.html
开源中国:http://www.oschina.net/p/logback/
博客:
http://wenku.baidu.com/view/dbe7da1dc5da50e2524d7fb0.html
http://wenku.baidu.com/view/71a056eb0975f46527d3e138.html
http://yuri-liuyu.iteye.com/blog/954038
http://www.cnblogs.com/yongze103/archive/2012/05/05/2484753.html
http://blog.csdn.net/mydeman/article/details/6716925
第1章:slf4j
(1)slf4j使用步骤
1.直接从官网http://www.slf4j.org/download.html下载slf4j-api-1.7.5.jar包放到项目classpath中,或者通过maven依赖配置从中央仓库中获取,坐标如下:
<!-- slf4j日志门面 --><dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
2.编写测试代码。如下
结构:
pom.xml配置:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.lsl</groupId>
<artifactId>test-maven</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>test-maven</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 设定除中央仓库(repo1.maven.org/maven2/)外的其他仓库,按设定顺序进行查找. -->
<repositories>
<!-- 本地仓库 -->
<repository>
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public</url>
<releases>
<checksumPolicy>fail</checksumPolicy>
</releases>
<snapshots>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<!-- 设定团队持续集成发布包服务器 -->
<distributionManagement>
<repository>
<id>rcms_release</id>
<name>rcms_release</name>
<url>http://localhost:8081/nexus/content/repositories/rcms_release/</url>
</repository>
<snapshotRepository>
<id>rcms_snapshots</id>
<name>rcms_snapshots</name>
<url>http://localhost:8081/nexus/content/repositories/rcms_snapshots/</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
<dependencies>
<!-- 日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
</dependencies>
<build>
<finalName>test-maven</finalName>
<plugins>
<!-- JDK編译插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
<encoding>UTF-8</encoding>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
<!-- 源码打包插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId>
<version>2.1.2</version>
<configuration>
<attach>true</attach>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 把依赖的jar包拷到lib目录下 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependency</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.basedir}/lib</outputDirectory>
<overWriteReleases>true</overWriteReleases>
<overWriteSnapshots>true</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>Slf4jTest.java测试类:
package com.lsl.test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Hello world!
*
*/
public class Slf4jTest
{
private static final Logger logger = LoggerFactory.getLogger(Slf4jTest.class);
public static void main( String[] args )
{
logger.info("Hello World");
}
}
3.如果现在运行测试,控制台将会打印下面信息,原因是slf4j绑定不到classpath。
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.4.为了可以正常打印日志,需加上slf4j的slf4j-simple-1.7.5.jar包用于绑定classpath,该包同样可以在官网下载,或通过如下maven配置获取: <!-- slf4j日志绑定 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.5</version>
</dependency>
</dependencies>
5.运行测试,控制台打印日志如下,slf4j运用测试完成:
[main] INFO com.lsl.test.Slf4jTest - Hello World
(2)slf4j门面示意图
第2章:log4j
(1)log4j使用步骤
1.直接从官网http://logging.apache.org/log4j/1.2/download.html下载log4j-1.7.5.jar包放到项目classpath中,或者通过maven依赖配置从中央仓库中获取,坐标如下:
<!-- log4j日志组件 --><dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2.配置log4j.properties文件。将该配置文件放到classpath中系统会自动加载,要求配置文件名称为“log4j.properties”;或在日志调用前加载,该方式文件名称和路径可以自定义,加载调用PropertyConfigurator.configure("配置文件路径")。文件配置例子如下,具体解释在下一小节:
# Output pattern : date [thread] priority category - messagelog4j.rootLogger=WARN, Console, RollingFile
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
#RollingFile
log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingFile.File=log/server.log
log4j.appender.RollingFile.encoding=UTF-8
log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern=%d [%t] %-5p [%c:%L] - %m%n
#Project defalult level
log4j.logger.com.lsl=INFO
log4j.logger.com.lsl.test=INFO
3.编写测试类如下:
结构:
Log4jTest.java测试类:
package com.lsl.test;import org.apache.log4j.Logger;
/**
* Hello world!
*
*/
public class Log4jTest
{
private static final Logger logger = Logger.getLogger(Log4jTest.class);
public static void main( String[] args )
{
logger.info("Hello World");
}
}
4.maven编译后运行测试类,控制台打印如下日志,测试成功:
2013-10-17 18:51:15,921 [main] INFO [com.lsl.test.Log4jTest] - Hello World
(2)log4j.properties配置说明
1.配置根Logger
格式:log4j.rootLogger = [ level ] , appenderName, appenderName, …
说明:level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,只有等于及高于这个级别的才进行处理,则应用程序中所有DEBUG级别的日志信息将不被打印出来。ALL:打印所有的日志,OFF:关闭所有的日志输出。 appenderName就是指定日志信息输出到哪个地方。可同时指定多个输出目的地。
例子:log4j.rootLogger=WARN, Console, RollingFile
2.配置日志信息输出目的地 Appender
格式:log4j.appender.appenderName = fully.qualified.name.of.appender.class
说明:Appender 负责控制日志记录操作的输出。这里的appenderName为配置根Logger中定义的,可任意起名。Log4j提供的appender有以下几种:
还可通过log4j.appender.R.MaxBackupIndex=1设置为保存一个备份文件。)
3.配置日志信息的格式(布局)Layout
格式:log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
说明:Layout 负责格式化Appender的输出。Log4j提供的layout有以下几种:
4.格式化日志信息
格式:log4j.appender.Console.layout.ConversionPattern=格式化
说明:og4J采用类似C语言中的printf函数的打印格式格式化日志信息,如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:
5.日志文件路径
格式:log4j.appender.RollingFile.File=D:\\Tomcat 5.5\\logs\\qc.log
说明:定义名为RollingFile的输出端的文件名为D:\\Tomcat 5.5\\logs\\qc.log可以自行修改。
例子:log4j.appender.RollingFile.File=log/server.log
6.指定日志等级
格式:log4j.logger.com. neusoft =DEBUG
说明:指定com.neusoft包下的所有类的等级为DEBUG。
例子:log4j.logger.com.lsl=INFO
7.设置日志编码
格式:log4j.appender.RollingFile.encoding=UTF-8
说明:设置日志编码。
例子:log4j.appender.RollingFile.encoding=UTF-8
(3)log4j整合slf4j日志门面步骤
1.直接下载slf4j-api-1.7.5.jar和slf4j-log4j12-1.7.5.jar包放到项目classpath中,或者通过maven依赖配置从中央仓库中获取,坐标如下:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.5</version>
</dependency>
<!-- log4j与slf4j连接包,依赖关联了log4j-1.2.17.jar包,不用再单独配 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
2.log4j.properties配置同上节的配置,测试类有一点不同,如下:
项目结构同上节,测试类如下:
package com.lsl.test;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Hello world!
*
*/
public class Log4jTest
{
private static final Logger logger = LoggerFactory.getLogger(Log4jTest.class);
public static void main( String[] args )
{
logger.info("Hello World");
}
}
3.打maven编译后运行测试,结果如下,测试成功:
2013-10-17 19:08:09,033 [main] INFO [com.lsl.test.Log4jTest] - Hello World
第3章:logback
(1)logback使用步骤
1.直接从官网http://logback.qos.ch/download.html下载解压获取logback-classic-1.0.13.jar、logback-core-1.0.13.jar包放到项目classpath中,再按前面的章节说明下载slf4j-api-1.7.5.jar包放在classpath中,或者通过maven依赖配置从中央仓库中获取,因为logback-classic依赖了logback-core和slf4j-api,所以可以只配置logback-classic依赖,坐标如下:
<!-- logback日志,依赖了logback-core和slf4j-api --><dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.0.13</version>
</dependency>
2.配置logback.xml文件。将该配置文件放到classpath中系统会自动加载,要求配置文件名称为“logback.xml”;或在日志调用前加载,该方式文件名称和路径可以自定义。文件配置例子如下,具体解释见:
http://wenku.baidu.com/view/dbe7da1dc5da50e2524d7fb0.html
http://wenku.baidu.com/view/71a056eb0975f46527d3e138.html
配置文件遍历顺序如下:
1).logback首先会试着查找logback.groovy文件;
2).当没有找到时,继续试着查找logback-test.xml文件;
3).当没有找到时,继续试着查找logback.xml文件;
4).如果仍然没有找到,则使用默认配置(打印到控制台)。
logback.xml配置例子如下:
<?xml version="1.0" encoding="UTF-8"?><configuration>
<appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date{HH:mm:ss.SSS} [%thread] %-5level [%logger{36}] - %msg%n</pattern>
</encoder>
</appender>
<appender name="RollingFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>logs/server.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>logs/server.%d{yyyyMMdd}.log</fileNamePattern>
<!-- keep 7 days' worth of history -->
<maxHistory>7</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%date{HH:mm:ss.SSS} [%thread] %-5level [%logger{36}] - %msg%n</pattern>
</encoder>
</appender>
<logger name="com.lsl" level="INFO" additivity="false">
<appender-ref ref="RollingFile"/>
<appender-ref ref="Console"/>
</logger>
<root level="WARN">
<appender-ref ref="Console"/>
</root>
</configuration>
3.编写测试类如下:
结构:
LogbackTest.java测试类:
package com.lsl.test;import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.util.StatusPrinter;
/**
* Hello world!
*
*/
public class LogbackTest
{
private static final Logger logger = LoggerFactory.getLogger(LogbackTest.class);
public static void main( String[] args )
{
logger.info("Hello World");
// LoggerContext lc = (LoggerContext)LoggerFactory.getILoggerFactory();
// StatusPrinter.print(lc);
}
}
4.maven编译后运行测试类,控制台打印如下日志,测试成功:
11:21:04.946 [main] INFO [com.lsl.test.LogbackTest] - Hello World
- java日志组件
- java 日志组件
- java日志组件的介绍
- java中的日志组件-log4j
- JAVA几种日志组件的兼容
- java 日志组件logback配置及详解
- java日志组件(2):common-logging
- java日志组件(3):log4j 1
- java日志组件(4):logback
- Java 日志组件slf4j+logback使用实例
- 史上最全Java各类日志组件分析汇总
- java日志组件(1):日志体系及种类
- 日志组件
- 日志组件
- java日志处理组件log4j--log4j.xml配置详解
- Java日志组件 commons-logging和log4j介绍
- Java日志组件 commons-logging和log4j介绍
- java日志处理组件log4j--log4j.xml配置详解
- PHP依赖管理工具Composer入门
- Vim基本命令
- android中画虚线--.PathEffect类简单认识
- Oracle DB Order By子句
- 团队管理
- java日志组件
- STL学习笔记----11.STL算法之 (变动性算法)
- Xcode学习笔记---在Xcode4.6中如何引入Existing Frameworks
- 简单排序之冒泡排序
- 有关HBase系统配置级别的优化
- JS日历控件
- 迈博第二天-linux安装与命令
- 相似性度量
- Java jdbc数据库连接池总结!