zoukankan      html  css  js  c++  java
  • Maven项目下使用log4j

      Apache Log4j是一个基于Java的日志记录工具,它的日志级别按下面顺序递减:

    级别描述
    OFF 最高级别,用于关闭日志记录。
    FATAL 将导致应用程序提前终止的严重错误的信息将立即呈现在日志上。
    ERROR 将其他运行时错误或意外情况的信息呈现在日志上。
    WARN 使用已过时的API,API的滥用,潜在错误,其他不良的或意外的运行时的状况(但不一定是错误的)
    INFO 一些感兴趣的运行时事件(启动/关闭
    DEBUG 一些详细信息,查看程序的运行状态
    TRACE 最详细的信息。一般这些信息只记录到日志文件中。

     下面介绍如何在java项目中如何使用Log4j。

    1. 配置maven,引入jar包

      <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
        </dependencies>

    2. 配置log4j的配置文件

      其配置文件名为log4j.properties,需要手动在java/resources下创建,如果建在其他位置,idea这个工具将无法识别(如果无法识别后面会介绍怎么解决)。下面介绍该配置文件的几个基本配置项。

    a. 日志的输出的目的地

    形式描述
    org.apache.log4j.ConsoleAppender 控制台
    org.apache.log4j.FileAppender 文件
    org.apache.log4j.DailyRollingFileAppender 每天产生一个日志文件
    org.apache.log4j.RollingFileAppender 文件大小到达指定尺寸的时候产生一个新的文件
    org.apache.log4j.WriterAppender 将日志信息以流格式发送到任意指定的地方

    b. Layout:日志输出格式

    形式描述
    org.apache.log4j.HTMLLayout 以HTML表格形式布局
    org.apache.log4j.PatternLayout 可以灵活地指定布局模式
    org.apache.log4j.SimpleLayout 包含日志信息的级别和信息字符串
    org.apache.log4j.TTCCLayout 包含日志产生的时间、线程、类别等等信息

    c. 格式化日志信息

    采用类似C语言中的printf函数的打印格式格式化日志信息

    形式描述
    %d 输出日志时间点的日期或时间,可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS}
    %t 输出产生该日志事件的线程名
    %p 优先级 DEBUG/INFO/ERROR
    %c 所属类的全名(包括包名)
    %l 发生的位置,在某个类的某行
    %m 输出代码中指定的讯息,如log(message)中的message
    %n 输出一个换行符号

    案例

      案例使用如下的配置信息:

    ### set log levels ###
    log4j.rootLogger = DEBUG,Console,File
    ​
    ###  输出到控制台  ###
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.Target=System.out
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=[%d{yy/MM/dd HH:mm:ss:SSS}]-%l:%m%n
    ​
    ### 输出到日志文件 ###
    log4j.appender.File=org.apache.log4j.RollingFileAppender 
    log4j.appender.File.File=${project}src\main\resources\app.log
    log4j.appender.File.MaxFileSize=10MB
    log4j.appender.File.Threshold=ALL
    log4j.appender.File.layout=org.apache.log4j.PatternLayout
    log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss,SSS}][%c]%m%n

    3. 使用Log4j

    配置完上面信息后就可以创建一个Java文件去测试日志的文件的使用了。

    package com.gqx.test;
    import org.apache.log4j.Logger;
    public class Hello {
        private static Logger log = Logger.getLogger(Hello.class.getClass());
        public static void main(String[] args) {
            log.debug("debug...");
            log.error("error...");
        }
    }

    结果如图左侧(左上是控制台的log,左下是app.log文件的log),其中整个工程的布局如图右侧:

    4 . 问题

    过程中可能出现下面的问题:

    log4j:WARN No appenders could be found for logger (java.lang.Class).
    log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

    这个其实是IDE(Idea)找不到log4j的properties文件,有些博客说可以去project_structure去改配置,尝试了一下可惜没有用,但发现了可以在程序中通过代码去指定properties文件的位置,如果出现了 上面的错误,可以改成如下形式:

    package com.gqx.test;
    import org.apache.log4j.Logger;
    import org.apache.log4j.PropertyConfigurator;
    public class Hello {
        private static Logger log = Logger.getLogger(Hello.class.getClass());
        public static void main(String[] args) {
            //获取当前项目的根目录
            String relativelyPath=System.getProperty("user.dir");
            PropertyConfigurator.configure(relativelyPath+ "\src\main\resources\log4j.properties");
            log.debug("debug...");
            log.error("error...");
        }
    }

     

  • 相关阅读:
    diary and html 文本颜色编辑,行距和其它编辑总汇
    bash coding to changeNames
    virtualbox ubuntu 网络连接 以及 连接 secureCRT
    linux 学习6 软件包安装
    linux 学习8 权限管理
    vim 使用2 转载 为了打开方便
    ubuntu
    linux 学习15 16 启动管理,备份和恢复
    linux 学习 14 日志管理
    linux 学习 13 系统管理
  • 原文地址:https://www.cnblogs.com/helloworldcode/p/11699105.html
Copyright © 2011-2022 走看看