一.log4j简介
  1.log4j:log4j即Log for Java,是以精确的粒度/指定的计划控制日志信息输出的日志工具
  2.log4j的组成:log4j由Loggers(记录器)、Appenders(输出端)、Layouts(布局)组成
二.log4j使用步骤
  1.导入log4j的jar包(log4j-xxx.jar)
  2.在src目录下创建log4j.properties或l文件并对其进行配置
  3.在要使用log4j的类中声明并初始化Logger对象:private Logger log = Logger(当前类名.Name() 或 "当前类名");
  4.经过以上操作后即可在需要打印日志的地方通过log.输出等级方法名("...")打印相关日志
三.log4j配置:
  1.log4j配置文件:log4j的配置可以配置在src目录下的log4j.properties或l中,log4j先查
l,如果不到l再查log4j.properties
  2.log4j.properties配置:log4j配置主要是对rootLogger的配置,即Logger=输出等级,输出端名1,输出端名2,...  //初始化Logger并设置输出等级和输出端类型(一个记录器可有多个输出端),该配置为log4j的基本配置(必不可少的配置)
    (1).输出等级说明:log4j中大于或等于Logger中指定的输出等级将被执行,小于Logger中指定的输出等级将被关闭
    ①.输出等级:用来指定输出的日志信息的重要程度
        OFF:关闭所有日志输出,等级最高
        FATAL:用于输出致命错误信息
        ERROR:用于输出错误信息
        WARN:用于输出警告信息
        INFO:用于输出一般信息
        DEBUG:用于输出开发阶段调试信息
        ALL:打开所有日志输出,等级最低
    ②.输出等级优先级:OFF>FATAL>ERROR>WARN>INFO>DEBUG>ALL
    (2).输出端配置
    ①.输出到文件配置:
        log4j.appender.输出端名(自己定义)=输出类型 //设置输出类型
        log4j.appender.输出端名(自己定义).layout=输出布局  //设置输出布局
        log4j.appender.输出端名(自己定义).layout.ConversionPattern=输出格式  //设置输出的信息格式
        log4j.appender.输出端名(自己定义).File=输出文件路径+文件名  //设置将信息输出到指定文件中
    ②.输出到控制台配置:
        log4j.appender.输出端名(自己定义)=输出类型 //设置输出类型
        log4j.appender.输出端名(自己定义).layout=输出布局  //设置输出布局
        log4j.appender.输出端名(自己定义).layout.ConversionPattern=输出格式  //设置输出的信息格式
    (3).配置实例/示例
    #下面一行初始化Logger同时给Logger设置输出等级为debug和两个输出端consoleOut、fileOut
    Logger=DEBUG,consoleOut,fileOut
    #下面三行配置输出端为输出到控制台
    soleOut=org.apache.log4j.ConsoleAppender
    soleOut.layout=org.apache.log4j.PatternLayout
    soleOut.layout.ConversionPattern=%d{yyyy年MM月dd日 HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n
    #下面四行配置输出端为输出到文件
    log4j.appender.fileOut=org.apache.log4j.FileAppender
    log4j.appender.fileOut.layout=org.apache.log4j.PatternLayout
    log4j.appender.fileOut.layout.ConversionPattern=%d{yyyy年MM月dd日 HH:mm:ss.SSS}[%24F:%-3L:%-5p]%x %m%n
    log4j.appender.fileOut.File=../webapps/log4jDemo/log/log4j.log
  l配置
    敬请期待...
  4.输出类型:
    org.apache.log4j.ConsoleAppender  //输出到控制台
    org.apache.log4j.FileAppender  //输出到文件
    org.apache.log4j.DailyRollingFileAppender  //输出到文件并每天输出到新的文件log4j与log4j2
    org.apache.log4j.RollingFileAppender  //输出到文件并指定文件大小,当文件大小达到指定大小时自动把文件改名同时生成另一新文件
    org.apache.log4j.WriteAppender  //以流格式发送到任意指定地方
    org.apache.log4j.jdbc.JDBCAppender  //通过JDBC把日志信息输出到数据库
  5.输出布局:
    org.apache.log4j.PatternLayout  //以自定义形式输出(用这种方式的布局可以在输出格式中自定义输出格式)
    org.apache.log4j.HTMLLayout  //以HTML表格形式输出
    org.apache.log4j.SimpleLayout  //包含日志信息的级别和信息字符串
    org.apache.log4j.TTCCLayout  //包含日志产生的时间、线程、类别等
  6.输出文件路径:
    (1).输出文件默认目录:log4j的默认路径或./(当前目录)是tomcate根目录下的bin目录(即默认情况log4j会把"log4j.appender.输出端名.File=输出文件"中的输出文件创建在该目录下)  //注:WebSphere中log4j的日志信息默认输出到WebSphere根目录(通常为IBM目录)下的WebSphere/AppServer/profiles/AppSrv01/logs/server1/SystemOut.log文件中
    (2).中间件根目录:log4j中跳到tomcate根目录用../(因为默认目录是根目录下的bin,所以../即可跳到根目录)或${catalina.home}  //如:../webapps/log4jDemo/log/log4j.log
    (4).绝对路径:log4j中的输出文件路径可以直接写绝对路径  //如:D:\\log\\log4j.log
    (5).log4j单独使用时配置输出文件路径为工程根目录:在系统启动的初始化servlet的init方法
中设置系统全局变量(值为系统根目录的完整url),再到log4j.properties中用${系统的初始化servlet中设置的系统全局变量名}获取
        ①.在l中配置初始化servlet:
          <servlet>
            <servlet-name>自定义的servlet名称</servlet-name>
            <servlet-class>系统启动时要初始化的servlet类名(完整包名+类名)</servlet-class>
            <init-param> 
            <param-name>参数名</param-name>
            <param-value>参数值</param-value>
            </init-param>
            <load-on-startup>1</load-on-startup> 
        </servlet>
        ②.public class SystemInitialize extends javax.servlet.http.HttpServlet {
        public void init() {
            String initParam = getInitParameter("参数名");  //获取l中配置的servlet的初始化参数
            initParam = initParam==null || im().equals("") ? "指定目录名" : initParam;
            System.setProperty("系统全局变量名", getServletContext().getRealPath("/"或已获取的l中配置的servlet的初始化参数));  //System.setProperty(String key,Object value):设置系统全局变量,设置后可在系统任意处用Property(String key)或${key}来获得全局变量值
        }
        }
        注:在该servlet中设置值为log4j路径的系统全局变量前(即System.setProperty()语句前)不能声明/初始化log4j的任何对象,否则后面设置的路径将不起用(因为在没有设置log4j的

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。