Log4J简单使用

一、一般会将commons-logging和Log4j一起使用
   原因:1、commons-logging功能较弱

2、log4j功能强大。

所需jar:

log4j-1.2.16.jar

slf4j-api-1.6.2.jar

slf4j-log4j12-1.6.2.jar

commons-logging-1.1.1.jar

二、commons-logging作用:
   1、提供一个统一的日志接口,简化操作。
   2、自动选择适当的日志实现系统
           1)首先在classpath中查找commons-logging.properties文件,如果找到,则使用其中定义的Log实现类
           2)如果找不到commons-logging.properties文件,则在查找是否已定义系统环境变量org.apache.commons.logging.Log,找到则
        使用其定义的Log实现类。
           3)如果上述实现类都找不到,则会查看classpath中是否有Log4j的包,如果发现,则自动使用Log4j作为日志实现类
           4)如果上述都没,则使用JDK自身的日志实现类(jdk1.4之后出现日志实现类)
           5)最后,如果上述都找不到,则会使用commons-logging自己提供的一个简单的日志实现类SimpleLog

3、可以不用配置。

三、使用:
   1、导入相关类
        import org.apache.commons.logging.Log;
        import org.apache.commons.logging.LogFactory;
    2、创建静态成员
        private static Log log = LogFactory.getLog(LogTest.class);//括号中的class一般使用当前类的class
    3、使用log对象的debug、info、warn、error、fatal方法操作日志。
    Log使用Excemple:
    
    package test;

import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.junit.Test;

public class Log4jTest {

private static Log logger = LogFactory.getLog(Log4jTest.class);
        @Test
        public void testLog4j(){
            
            logger.info("info message");
            logger.debug("debug message");
            logger.warn("warn message");
            logger.error("error message");
            logger.fatal("fatal message");
            logger.info(Logger.getRootLogger());
        }
    }
    
    本例中使用到的是Log4j的日志实现,对于Log4j,必须在classpath路径下配置log4j.properties文件,如果该文件配置如下:
    log4j.rootLogger=debug,my

### direct log messages to my ###
    #message out to console
    log4j.appender.my=org.apache.log4j.ConsoleAppender
    log4j.appender.my.Target=System.out
    log4j.appender.my.layout=org.apache.log4j.PatternLayout
    log4j.appender.my.layout.ConversionPattern=%d %5p %c{1}:%L - %m%n
    
    则控制台输出为:
    
    2015-01-13 16:00:11,378  INFO Log4jTest:13 - info message
    2015-01-13 16:00:11,382 DEBUG Log4jTest:14 - debug message
    2015-01-13 16:00:11,382  WARN Log4jTest:15 - warn message
    2015-01-13 16:00:11,382 ERROR Log4jTest:16 - error message
    2015-01-13 16:00:11,382 FATAL Log4jTest:17 - fatal message
    2015-01-13 16:00:11,382  INFO Log4jTest:18 - [email protected]
    
    如果log4j.properties配置如下:

log4j.rootLogger=info,my

### direct log messages to my ###
    #message out to console
    log4j.appender.my=org.apache.log4j.ConsoleAppender
    log4j.appender.my.Target=System.out
    log4j.appender.my.layout=org.apache.log4j.PatternLayout
    log4j.appender.my.layout.ConversionPattern=%d %5p %c{1}:%L - %m%n

则控制台输出结果为:
    
    2015-01-13 16:53:50,604  INFO Log4jTest:14 - info message
    2015-01-13 16:53:50,609  WARN Log4jTest:16 - warn message
    2015-01-13 16:53:50,609 ERROR Log4jTest:17 - error message
    2015-01-13 16:53:50,609 FATAL Log4jTest:18 - fatal message
    2015-01-13 16:53:50,610  INFO Log4jTest:19 - [email protected]
    
    由此可见,当为debug级别的时候输出信息较多。下面会详细介绍log4j配置文件的信息。
    上述代码虽然没有接触到Log4j,但Log的实现确实是由Log4j完成的。但是如果使用Log4j则必须配置log4j.properties文件,则在查找是否已定义系统环境变量org
    否则将会发生异常。

四、Log4j中三个主要组件:Logger、Appender、Layout
   Log4j允许开发人员定义多个Logger,每个Logger拥有自己的名字,Logger之间通过名字来表明隶属关系。
   例如:名称为"mylog.ylog"就是"mylog"的children。Log4j的rootLogger相当于java的Object。
   
   Appender:将log信息存放到什么地方,一个Logger可以拥有多个Appender,也是说我们既可以将信息输出到控制台,也可以输出到一个文件中
   Layout:  控制log信息的输出方式,即格式化输出信息。
   输出级别的种类:
   error:严重错误
   warn:一般警告
   info:一般要显示的信息
   debug:程序的调试信息
   
   配置日志输出目的地:

log4j.appender.appenderName = fully.qualified.name.of.appender.class
    1.org.apache.log4j.ConsoleAppender(控制台)
    2.org.apache.log4j.FileAppender(文件)
    3.org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
    4.org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
    5.org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
    配置日志信息格式:
    log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
    1.org.apache.log4j.HTMLLayout(以HTML表格形式布局),
    2.org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
    3.org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
    4.org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
    控制台选项

Threshold=DEBUG:指定日志消息的输出最低层次。
    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
    Target=System.err:默认情况下是:System.out,指定输出控制台
    FileAppender 选项
    Threshold=DEBUF:指定日志消息的输出最低层次。
    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
    File=mylog.txt:指定消息输出到mylog.txt文件。
    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
    RollingFileAppender 选项
    Threshold=DEBUG:指定日志消息的输出最低层次。
    ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。
    File=mylog.txt:指定消息输出到mylog.txt文件。
    Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。
    MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件。
    MaxBackupIndex=2:指定可以产生的滚动文件的最大数。
    log4j.appender.A1.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ssS} %c %m%n

Log例子

###################
    # Console Appender
    ###################
    log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
    log4j.appender.Threshold=DEBUG
    log4j.appender.CONSOLE.Target=System.out
    log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
    log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n
    #####################
    
    #####################
    # File Appender
    #####################
    log4j.appender.FILE=org.apache.log4j.FileAppender
    log4j.appender.FILE.File=file.log
    log4j.appender.FILE.Append=false
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    # Use this layout for LogFactor 5 analysis
    
    
    ########################
    # Rolling File
    ########################
    log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.ROLLING_FILE.Threshold=ERROR
    log4j.appender.ROLLING_FILE.File=rolling.log
    log4j.appender.ROLLING_FILE.Append=true
    log4j.appender.ROLLING_FILE.MaxFileSize=10KB
    log4j.appender.ROLLING_FILE.MaxBackupIndex=1
    log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
    log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    
    
    ####################
    # Socket Appender
    ####################
    log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
    log4j.appender.SOCKET.RemoteHost=localhost
    log4j.appender.SOCKET.Port=5001
    log4j.appender.SOCKET.LocationInfo=true
    # Set up for Log Facter 5
    log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
    log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
    
    
    ########################
    # Log Factor 5 Appender
    ########################
    log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
    log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000
    
    
    ########################
    # SMTP Appender
    #######################
    log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
    log4j.appender.MAIL.Threshold=FATAL
    log4j.appender.MAIL.BufferSize=10
    [[email protected]][email protected][/email]
    log4j.appender.MAIL.SMTPHost=mail.hollycrm.com
    log4j.appender.MAIL.Subject=Log4J Message
    [[email protected]][email protected][/email]
    log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
    log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    
    
    ########################
    # JDBC Appender
    #######################
    log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
    log4j.appender.DATABASE.URL=jdbc:mysql://localhost:3306/test
    log4j.appender.DATABASE.driver=com.mysql.jdbc.Driver
    log4j.appender.DATABASE.user=root
    log4j.appender.DATABASE.password=
    log4j.appender.DATABASE.sql=INSERT INTO LOG4J (Message) VALUES (‘[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n‘)
    log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
    log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n
    log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.A1.File=SampleMessages.log4j
    log4j.appender.A1.DatePattern=yyyyMMdd-HH‘.log4j‘
    log4j.appender.A1.layout=org.apache.log4j.xml.XMLLayout
    
    
    ###################
    #自定义Appender
    ###################
    log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
    log4j.appender.im.host = mail.cybercorlin.net
    log4j.appender.im.username = username
    log4j.appender.im.password = password
    log4j.appender.im.recipient = [email protected]
    log4j.appender.im.layout=org.apache.log4j.PatternLayout
    log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

最后文件路径设置问题
    System.setProperty("DeployDirectory", "../");
    log4j.appender.ROLLING_FILE.File=${DeployDirectory}

缀:

log4j.rootLogger=error,A2,files,DATABASE

log4j.appender.A2=org.apache.log4j.ConsoleAppender
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d [%t] %-5p %c - %m%n

#for file
log4j.appender.files.layout=org.apache.log4j.PatternLayout
log4j.appender.files.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.files=org.apache.log4j.RollingFileAppender
log4j.appender.files.File=ccexample.log
log4j.appender.files.MaxFileSize=1KB

#for file every day
log4j.appender.everyday=org.apache.log4j.DailyRollingFileAppender
log4j.appender.everyday.layout=org.apache.log4j.PatternLayout
log4j.appender.everyday.File=myloggers.log
log4j.appender.everyday.DatePattern=‘.‘yyyy-MM-dd‘.log‘
log4j.appender.everyday.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
log4j.appender.everyday.MaxFileSize=1KB

#for database
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
#log4j.appender.DATABASE.BufferSize=10
log4j.appender.DATABASE.URL=jdbc:oracle:thin:@127.0.0.1:1521:orcl2
log4j.appender.DATABASE.driver=oracle.jdbc.driver.OracleDriver
log4j.appender.DATABASE.user=qp
log4j.appender.DATABASE.password=qp
log4j.appender.DATABASE.sql=INSERT INTO tbl_log  VALUES (‘%m‘)
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout

在开发中使用的

################################################################
###########          logger choose           ###################
################################################################
log4j.rootLogger=INFO, A2

################################################################
###########  A1 : Console Appender           ###################
################################################################
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p] [%t] [%C::%M] %m%n

################################################################
###########  A2 : License File Appender            #############
################################################################
log4j.appender.A2.Threshold=INFO
log4j.appender.A2=org.apache.log4j.RollingFileAppender
log4j.appender.A2.File=${SYSTEMROOT}logs${SYSTEMSEPARATOR}sysdebug.log
log4j.appender.A2.MaxFileSize=10240KB
log4j.appender.A2.MaxBackupIndex=100
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p] [%t] [%C::%M] %m%n

log4j.logger.com.mchange.v2=DEBUG, C1

log4j.appender.C1.Threshold=DEBUG
log4j.appender.C1=org.apache.log4j.RollingFileAppender
log4j.appender.C1.File=${SYSTEMROOT}logs${SYSTEMSEPARATOR}c3p0debug.log
log4j.appender.C1.MaxFileSize=204800KB
log4j.appender.C1.MaxBackupIndex=100
log4j.appender.C1.layout=org.apache.log4j.PatternLayout
log4j.appender.C1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p] [%t] [%C::%M] %m%n

时间: 2024-11-05 18:46:20

Log4J简单使用的相关文章

Log4j简单学习笔记

log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常用级别的划分:Debug,Info,Warn,Error,Fatal这5个级别由低到高,如果配置的级别为"INFO"那么"Debug"级别的信息则不会显示"依次类推. 示例代码: @Test public void testLevel() { log.debu

Log4j简单的配置文件

简单的log4j配置文件 #日志输出文件夹 log4j.output.folder=e:/logs/share-log # WARN日志记录等级 MAIN为日志输入位置Appender log4j.rootLogger=WARN, MAIN # MAIN定义 #输出到文件,当文件大小达到尺寸时产生新文件 log4j.appender.MAIN=org.apache.log4j.RollingFileAppender #输出的文件名 log4j.appender.MAIN.file=${log4j

Log4j简单封装及配置

大家在项目中经常会用到Log4j,一般包括4个步骤: 1.编写log4j配置文件: 2.初始化log4j; 3.获取一个logger实例: 4.调用logger.debug() 等记录日志. 为了能详细控制每个包和类的日志输出,一般在每个类中都需要定一个logger实例,类似下面这样: public class ContextFactory { private static final Logger s_logger = Logger.getLogger(ContextFactory.class

log4j简单的例子

本文不赘述log4j的各种配置属性的意义只是简单的教你如何使用log4j的使用 1.首先新建一个java project 2.引入commons-logging-1.0.4.jar 和 log4j-1.2.15.jar两个包 版本号不限 3.在项目根目录下新建log4j.properties 文件内容如下 log4j.rootLogger=info, ServerDailyRollingFile, stdout log4j.appender.ServerDailyRollingFile=org.

log4j 简单用法

maven添加必要库: 1 <!-- https://mvnrepository.com/artifact/log4j/log4j --> 2 <dependency> 3 <groupId>log4j</groupId> 4 <artifactId>log4j</artifactId> 5 <version>1.2.17</version> 6 </dependency> 在web.xml中添加监

【转-整理】log4j 简单解释,配置

log4j主要由三大组件组成:loggers,appenders和layouts. 1.      定义日志组件logger 每个logger都可以拥有一个或者多个appender,每个appender表示一个日志的输出目的地,比如console或者某个文件. 配置root Logger的语法为: log4j.rootLogger=[priority],appenderName,appenderName,...- 配置自定义Logger组件的语法为: log4j.logger.loggerNam

Log4j 简单应用

#输出日志的包路径log4j.logger.mytiny.com=DEBUG,FILE log4j.rootLogger=WARN,stdout #控制台日志 log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%n%-d{yyyy

Log4J简单配置

### set log levels ### log4j.rootLogger= INFO, Console, File, Error ### Console appender definition ### log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out log4j.appender.Console.layout=org.apache.log4j.Pa

log4j简单应用

了解了log4j是怎么回事,配置了一个单机版的,在分布式上或者比较大的项目上基本不行,需要专门的日志管理系统 1,下载log4j.jar包,如果你的项目中使用了slf4j,可能需要slf4j-nop.jar包 2,写好配置文件,log4j.xml或者log4j.propertites都可以,运行项目它会自动在根目录下去找 3,日志输出主要是打印在控制台console,输出指定文件(可以根据日期或者文件大小创建新文件输入),IO流到指定地方这三种,如需要可以插入数据表或者邮件发送 4,级别有八种+