zoukankan      html  css  js  c++  java
  • Java Web log4j (日志)

    为什么要使用日志?

      开发阶段: 

        发现程序的问题,排错

      产品阶段:

        记录程序运行状态

    System.out.println()的局限性

      不能在运行时打开或者关闭

      不能选择包或者类,在运行的的时候打开或者关闭

      输出的信息没有分级

      只能输出文本信息

      不能改变输出的位置

    Log4j可以解决以上的问题!

    hibernate内置log4j,记录日志信息

    log4j官方网址:

        http://lgging.apache.org/log4j

    下载得到:

        log4j-1.2.15.jar

        log4j.properties

    把下载得到来的文件路径添加到当前项目的Build Path下

    log4j的基本用法:

    新建java project项目:

    build Path: log4j-1.2.15.jar

    Example.java

    import org.apache.log4j.Logger;

    public class Examlpe{

      private static Logger logger=Logger.getLogger(Example.class);

      public static voie main(String[] args){

        logger.debug("In the main method ");

        logger.ingo("Welcome come to http://www.cnblogs.com/hongten ");

        logger.error("This is an error message");

        }

    }    

    运行这个例子的时候需要log4.properties配置文件

    通过这个配置文件,我们就可以设置日志输出的格式,也就是外观

    还可以设置这个日志信息输出到那里去,是到终端,还是到物理文件。

    还可以记录日志的详细的样式

    在src目录下:

    log4j.propreties

    代码:

    设置终端输出日志信息:

    --------------log4j的输出级别为debug:debug,appender1,当然还可以是info,error,他们的级别是debug<info<error-----------------

    --------------如:现在是debug:debug.appender1,则debug,info,error都会输出-----------------

    --------------如:现在是info:into.appender1,则info,error会输出-----------------

    --------------如:现在是error:error.appender1,则error会输出-----------------

    log4j.rootLogger=debug,appender1

    --------------日志信息到终端输出-----------------

    log4j.appender.appender1=org.apache.log4j.ConsoleAppender

    --------------终端输出的样式-----------------

    log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

    设置保存日志信息的路径: 

    log4j.rootLogger=debug,appender1

    --------------日志信息到终端输出-----------------

    log4j.appender.appender1=org.apache.log4j.FileAppender

    --------------日志信息保存在c:/demolog4j.log中-----------------

    log4j.appender.appender1.File=c:/demolog4j.log

    --------------终端输出的样式-----------------

    log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout

    设置保存日志信息的路径和保存的格式为html格式: 

    log4j.rootLogger=debug,appender1

    --------------日志信息到终端输出-----------------

    log4j.appender.appender1=org.apache.log4j.FileAppender

    --------------日志信息保存在c:/demolog4j.log中-----------------

    log4j.appender.appender1.File=c:/demolog4j.htm

    --------------终端输出的样式-----------------

    log4j.appender.appender1.layout=org.apache.log4j.HTMLLayout

     

     log4j核心

      Logger

        Logger完成日志信息的处理,可以分成不同的级别记录日志信息,如:debug,info,error

        Logger可以定义输出的层次和决定信息是否输出

        Logger输出的信息是有优先级别的: ALL,TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF------级别由小到大

        常用的有:DEBUG,INFO,WARN,ERROR

      Appender

        Appender设置日志信息的去向  如:一个文件中,*.log,*.htm等。或者说是数据库中 

        Appender就是设置日志讯息输出到那个地方,可以同时指定多个输出目的地:

        log4j.rootLogger=debug,appender1,appender2    

        log4j.appender.appender1=org.apache.log4j.ConsoleAppender

        log4j.appender.appender2=org.apache.log4j.ConsoleAppender

    ---------------------------------------------------------------------------------

        常用的Appender:

      org.apache.log4j.ConsoleAppender(控制台)

      ogr.apache.log4j.FileAppender(文件)

      org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)

      org.apache.log4j.RollingFileAppender(文件大小达到指定尺寸的时候产生一个新的文件)

      org.apache.log4j.WiterAppender(将日志讯息一串流格式发送到任意指定的地方)

      org.apache.log4j.JDBCAppender(将日志讯息保存到数据库中)

      org.apache.log4j.SMTPAppender(将日志信息以邮件的方式发送到指定的地方)

    ---------------------------------------------------------------------------------

      Layout

        Layout设置日志信息的输出样式

    ---------------------------------------------------------------------------------

    Layout提供的layout的方式:

      org.apache.log4j.HTMLLayout(一HTML表格形式布局)

      org.apache.log4j.SimpleLayout(包含日志讯息的级别和讯息字符串)

      org.apache.log4j.TTCCLayout(包含日志产生时间,执行者,类别等讯息)

      org.apache.log4j.PatternLayout(可以灵活的指定布局模式)

    ---------------------------------------------------------------------------------

      org.apache.log4j.PatternLayout(可以灵活的指定布局模式)

    定制所输出的日志信息的样式:

      %p  输出优先级别:DEBUG,INFO,WARN,ERROR,FATAL

      %r   输出字应用启动到输出该日志讯息所耗时秒数

      %t   输出产生该日志事件的线程名

      %f 输出日志讯息所属的类别的类别名

      %c 输出日志讯息所属的类的全名

      %d   输出日志时间点的日期或时间

      %d{yyyy-MM-dd HH:mm:ss} 指定日期或时间格式

      %l 输出日志时间发生的位置,即输出日志讯息的语句处于他所在的类别的第几行

      %m  输出代码中指定的讯息

      %n  输出一个换行符号

    例子:

    log4j.properties

    log4j.rootLogger=debug,appender1

    log4j.appender.appender1=org.apache.log4j.ConsoleAppender

    log4j.appender.appender1.layout=org.apache.log4j.PatternLayout

    log4j.appender.appender1.layout.ConversionPattern=%r  [%t]    %p - %c - %l - %m%n

    例子二:

    log4j.rootLogger=debug,appender1,appender2
    log4j.appender.appender1=org.apache.log4j.ConsoleAppender
    log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
    log4j.appender.appender1.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}][%c] %m%n

    log4j.appender.appender2=org.apache.log4j.FileAppender
    log4j.appender.appender2.layout=org.apache.log4j.PatternLayout
    log4j.appender.appender2.layout.ConversionPattern=[%d{HH:mm:ss}][%c] %m%n
    log4j.appender.appender2.File=C:/HongtenLog4j.log

    ---------------------------------------------------------------------------------

      配置文件

        log4j.properties

        log4j.xml

    ---------------------------------------------------------------------------------

    log4j.xml

    代码:

    <?xml version="1.0"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
        <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n"/>
            </layout>
        </appender>

        <root>
            <priority value="ERROR"/>
            <appender-ref ref="CONSOLE"/>
        </root>
    </log4j:configuration>

    ---------------------------------------------------------------------------------

     关于性能影响

      Log4j对程序的运行的性能影响非常小

      还可以通过以下的方式,降低性能影响:

        if(logger.idDebugEnabled()){

          logger.debug("x="+longRunning());

        }

  • 相关阅读:
    内置函数,闭包。装饰器初识
    生成器
    百度ai 接口调用
    迭代器
    HashMap与ConcurrentHashMap的测试报告
    ConcurrentHashMap原理分析
    centos 5.3 安装(samba 3.4.4)
    什么是shell? bash和shell有什么关系?
    Linux中使用export命令设置环境变量
    profile bashrc bash_profile之间的区别和联系
  • 原文地址:https://www.cnblogs.com/hongten/p/2116547.html
Copyright © 2011-2022 走看看