Java实现日志的记录(log4j)

 

为什么要写日志?

1.在程序开发过程中,方便调试,并且方便发现程序运行时的错误信息。

2.在生产环境时,方便排除问题。

3.可以业务数据,以便后期对数据分析

 

实现方式

使用log4j,通过配置,将日志输出到控制台,文件,数据库。(因为该文章只是说明对log4j的使用,所有不涉及其它日志类库)

 

该项目使用的是maven项目,所以直接通过pom引入依赖包

        <!-- 日志 -->
        <!-- https://mvnrepository.com/artifact/log4j/log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

 

新增一个类,做为打印日志的测试

package com.kevin.log;

import org.apache.log4j.Logger;

/**
 * @author kevin
 * @version 1.0
 * @description     将日志的各种级别输出到控制台与文件
 * @createDate 2018/12/29
 */
public class Log4jDemo {

    public static Logger logger = Logger.getLogger(Log4jDemo.class);

    public static void main(String[] args) {

        for (int i = 0; i < 10000; i++) {
            // 日志的级别从低到高
            // 很低的日志级别一般不会使用
            logger.trace("logger的trace级别");
            // 细粒度信息对调试应用非常有帮助,主要打印一些运行信息
            logger.debug("logger的debug级别");
            // 粗粒度突出强调应用程序的运行过程,打印感兴趣或者重要的信息
            logger.info("logger的info级别");
            // 表明会出现潜在错误的情形,有些信息不是错误信息,但也要给程序员一点提示
            logger.warn("logger的warn级别");
            // 指出虽然发生错误,但不影响运行,打印错误和异常信息,如果不想输出太多日志可以使用该级别
            logger.error("logger的error级别");
            // 每个严重的错误事件将会导致应用程序的退出,出现错误可以停止程序运行进行调试
            logger.fatal("logger的fatal级别");
        }

    }
}

 

新增log4j.properties日志配置文件

 

1.将日志输出到控制台

#设置级别和目的地(这里可以设置多个目的地)
log4j.rootLogger=DEBUG,Console

#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

 

控制台输出的内容

 

2.将日志文件追加到文件和控制台(这个的缺点,是一直追加到同一个文件中,最后文件会无比的大)

#设置级别和目的地(这里可以设置多个目的地)
log4j.rootLogger=DEBUG,Console,File

#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

#输出到文件(一直输出到该文件中)
log4j.appender.File = org.apache.log4j.FileAppender
#输出日志文件路径
log4j.appender.File.File = E:\\log\\JavaBean_log\\File.log
#包含日志产生的时间、线程、类别等等信息
log4j.appender.File.layout = org.apache.log4j.TTCCLayout
#日志文件输出格式
log4j.appender.File.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

 

文件中的内容

 

3.输出日志到控制台和文件(根据设置的文件大小限定,达到限定大小则备份,指定备份数量,超出则覆盖)的日志配置

 

#3.输出日志到控制台和文件(根据设置的文件大小限定,达到限定大小则备份,指定备份数量,超出则覆盖)的日志配置
#设置级别和目的地(这里可以设置多个目的地)
log4j.rootLogger=DEBUG,Console,KEVIN

#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

#输出到文件(根据设置的文件大小限定,达到限定大小则备份,指定备份数量,超出则覆盖)
log4j.appender.KEVIN = org.apache.log4j.RollingFileAppender
#输出文件路径
log4j.appender.KEVIN.File =E:\\log\\JavaBean_log\\RollingFile.log
#日志文件限定大小
log4j.appender.KEVIN.MaxFileSize=1MB
#日志文件备份数量上限
log4j.appender.KEVIN.MaxBackupIndex=10
#以HTML表格形式布局
log4j.appender.KEVIN.layout = org.apache.log4j.PatternLayout
#日志文件输出格式
log4j.appender.KEVIN.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

 

文件中的内容

 

4.输出日志到控制台和文件(每天生成一个日志文件)的日志配置

#设置级别和目的地(这里可以设置多个目的地)
log4j.rootLogger=DEBUG,Console,DailyRollingFile

#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

#输出到文件(根据设置的日期格式,每天生成一个文件)
log4j.appender.DailyRollingFile = org.apache.log4j.DailyRollingFileAppender
#输出日志文件路径
log4j.appender.DailyRollingFile.File = E:\\log\\JavaBean_log\\DailyRollingFile.log
#日志文件生成周期,当前为每天生成一个文件
log4j.appender.DailyRollingFile.DatePattern = '.'yyyy-MM-dd_HH_mm
#灵活指定日志格式
log4j.appender.DailyRollingFile.layout = org.apache.log4j.PatternLayout
#日志文件输出格式
log4j.appender.DailyRollingFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n

日志文件内容

 

日志中输出格式,各种参数配置

%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921
%r: 输出自应用启动到输出该log信息耗费的毫秒数
%c: 输出日志信息所属的类目,通常就是所在类的全名
%t: 输出产生该日志事件的线程名
%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java:10)
%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。
%%: 输出一个”%”字符
%F: 输出日志消息产生时所在的文件名称
%L: 输出代码中的行号
%m: 输出代码中指定的消息,产生的日志具体信息
%n: 输出一个回车换行符,Windows平台为”\r\n”,Unix平台为”\n”输出日志信息换行
可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:
%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。
%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,”-”号指定左对齐。
%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。
%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边交远销出的字符截掉。

根据日期周期生成日志文件的参数

  • ’.’yyyy-MM: 每月
  • ’.’yyyy-ww: 每周
  • ’.’yyyy-MM-dd: 每天
  • ’.’yyyy-MM-dd-a: 每天两次
  • ’.’yyyy-MM-dd-HH: 每小时
  • ’.’yyyy-MM-dd-HH-mm: 每分钟

 

日志级别

// 日志的级别从低到高
trace:很低的日志级别一般不会使用
debug:细粒度信息对调试应用非常有帮助,主要打印一些运行信息
info:粗粒度突出强调应用程序的运行过程,打印感兴趣或者重要的信息
warn:表明会出现潜在错误的情形,有些信息不是错误信息,但也要给程序员一点提示
error:指出虽然发生错误,但不影响运行,打印错误和异常信息,如果不想输出太多日志可以使用该级别
fatal:每个严重的错误事件将会导致应用程序的退出,出现错误可以停止程序运行进行调试

log4j的配置文件

1. Log4j支持两种配置文件格式,一种是XML格式的文件,一种的proerties格式的文件,根据自己的爱好使用文件格式

2. log4j.rootLogger=[level],appenderName,appenderName....

level:是日志级别,优先级从高到低是fatal,error,warn,info,debug,trace

appenderName:指定日志输出的目的地,可以指定多个目的地。

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

3.appender的配置参数

(1).ConsoleAppender选项

Threshold=WARN:指定日志消息的输出最低层次。

ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。

Target=System.err:默认情况下是:System.out,指定输出控制台

(2).FileAppender 选项

Threshold=WARN:指定日志消息的输出最低层次。

ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。

File=mylog.txt:指定消息输出到mylog.txt文件。

Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

(3).DailyRollingFileAppender 选项

Threshold=WARN:指定日志消息的输出最低层次。

ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。

File=mylog.txt:指定消息输出到mylog.txt文件。

Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

DatePattern=’.’yyyy-ww:每周滚动一次文件,即每周产生一个新的文件。当然也可以指定按月、周、天、时和分。即对应的格式如下:

  • ’.’yyyy-MM: 每月
  • ’.’yyyy-ww: 每周
  • ’.’yyyy-MM-dd: 每天
  • ’.’yyyy-MM-dd-a: 每天两次
  • ’.’yyyy-MM-dd-HH: 每小时
  • ’.’yyyy-MM-dd-HH-mm: 每分钟

(4).RollingFileAppender 选项

Threshold=WARN:指定日志消息的输出最低层次。

ImmediateFlush=true:默认值是true,意谓着所有的消息都会被立即输出。

File=mylog.txt:指定消息输出到mylog.txt文件。

Append=false:默认值是true,即将消息增加到指定文件中,false指将消息覆盖指定的文件内容。

MaxFileSize=100KB: 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件

MaxBackupIndex=2:指定可以产生的滚动文件的最大数。

 

Log4j提供的layout:

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

关于Additity:

它是 子Logger 是否继承 父Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承父Logger的appender,也就是说子Logger会在父Logger的appender里输出。若是additivity设为false,则子Logger只会在自己的appender里输出,而不会在父Logger的appender里输出。

Mr Cao
关注 关注
  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
日志级别 debug info warn eirror fatal
网易搬砖选手
02-27 5669
日志级别 debug info warn eirror fatal 软件中总免不了要使用诸如 Log4net, Log4j, Tracer 等东东来写日志,不管用什么,这些东东大多是大同小异的,一般都提供了这样5个日志级别: × Debug × Info × Warn × Error × Fatal 一个等级比一个高
Java下利用log4j记录日志的方法
09-01
本文先对log4j进行了简短的介绍,而后通过安装、配置和普通项目和web项目几个方面来详细介绍了在Java下利用log4j记录日志的方法,有需要的朋友们可以参考借鉴。
java日志怎么实现_JAVA项目中怎么实现一个通用日志记录功能
weixin_29326909的博客
02-24 1635
JAVA项目中怎么实现一个通用日志记录功能发布时间:2020-11-21 17:04:50来源:亿速云阅读:53作者:Leah今天就跟大家聊聊有关JAVA项目中怎么实现一个通用日志记录功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。使用Aop记录操作日志第一步:添加Aop/*** 统一日志处理Handler* @author Mingch...
Java优雅的记录日志log4j实战篇
z_ssyy的博客
12-15 3281
项目开发中,记录错误日志有以下好处:方便调试便于发现系统运行过程中的错误存储业务数据,便于后期分析自己写类,将日志数据,以io操作方式,写数据到文本文件、数据库中。log4j可以将日志输出到console窗口、文本文件、数据库等,功能强大!slfj也是一个很强大的功能,slfj旨在一统天下,提供了logging.jar 和 log4j的接口,可以通过slfj来调用log4j,也可以调用jdk的logging。使用jdk自带的logging.jar中的方法。
日志工具类-java实现
12-16
开发项目经常需要日志模块打印输出,因此封装一个日志内,供自己平时使用,有些模块重复书写浪费时间,所以直接拉下来能快速一点。
log4j日志的基本使用
09-27
通过截图详细记载了log4j的基本使用,log4j三个重要组件:loggers 日志记录器 Appenders 输出端 Layout日志格式化器
如何在 Java 中进行日志记录
热门推荐
allway2的博客
10-27 1万+
您可以使用本指南为您的应用程序发现、理解和使用正确的 Java 日志库,例如 Log4j2、Logback 或 java.util.logging。 日志“似乎”是一个非常简单的主题,但在实践中可能相当棘手,并且没有在任何地方进行足够详细的介绍。阅读本指南以充分了解 Java 日志环境。 介绍 迟早,每个 Java 应用程序都需要日志记录。 可能您只是想将系统状态或用户操作记录到文件中,以便您的操作人员了解正在发生的事情。 <span style="color:#21252
Java日志框架
weixin_45711188的博客
07-28 167
1. 现有的日志框架 JUL(java util logging)、logback、log4jlog4j2 JCL(Jakarta Commons Logging)、slf4j( Simple Logging Facade for Java日志门面:JCL、slf4j 日志实现:JUL、logback、log4jlog4j2 2. JUL JUL全称Java util Logging是java原生的日志框架,使用时不需要另外引用第三方类库,相对其他日志框 架使用方便,学习简单,能够在小型应用中灵活使
Java中的记录器 - Java日志示例
YunWisdom
03-08 1221
Java中的记录器 - Java日志示例 今天我们将研究Java中的Logger。Java Logger提供了java编程的日志记录。 目录[隐藏] 1Java中的记录器 1.1Java Logger 1.2Java日志记录级别 1.3Java日志处理程序 1.4Java日志记录格式化程序 1.5Logger in Java - Java...
Java日志的使用
qq_55538458的博客
10-25 2729
Java日志的使用
log4j2.xml记录日志到到数据库
11-16
演示了java记录通过log4j2记录日志到mysql数据库中
java-日志-log4j.7z
06-18
log4j是eclipse 当中常用的记录日志的文件,使用方法详见我的博客。在初涉边框下面有一节描述日志使用的
java日志的两种方式
03-08
log4j.properties写日志和logback.xml两种方式写日志的demo
JAVA实现通用日志记录方法
08-30
本篇文章主要介绍了JAVA实现通用日志记录方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java 日志记录 log4j 最简明教程
05-25
NULL 博文链接:https://janeky.iteye.com/blog/455298
infrared-remote-candroid studiodemo
最新发布
05-05
android studio下载
【新质生产力】新质生产力赋能智能制造数字化解决方案.pptx
05-05
【新质生产力】新质生产力赋能智能制造数字化解决方案.pptx
基于matlab实现的用于应用布格重力异常数据反演地下异常密度体.rar
05-05
基于matlab实现的用于应用布格重力异常数据反演地下异常密度体.rar
log4j如何实现日志记录功能
06-01
log4j是一个开源的Java日志记录框架,可以帮助Java程序员在应用程序中实现灵活且高效的日志记录log4j日志记录功能可以通过以下步骤实现: 1. 引入log4j依赖库 在Java项目中,需要在项目的classpath中引入log4j...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Spark系列---SparkSQL(三)读取Txt文件、Json文件、Hive、Mysql数据源(Java、Scala版本) 8009
  • Flink部署后启动不成功错误 6263
  • Java实现日志的记录(log4j) 4857
  • Spring Boot---(14)SpringBoot做数据效验Validate(数据效验,对页面中输入的数据进行校验) 4195
  • Flink HA高可用集群搭建(Standalone Cluster) 4032

分类专栏

  • 项目管理 4篇
  • 大数据 61篇
  • SprintBoot 17篇
  • spark 28篇
  • Java设计模式 23篇
  • 深入理解JVM虚拟机的原理 15篇
  • SpringCloud 10篇
  • struts 2篇
  • spring 1篇
  • mysql 2篇
  • JDBC 1篇
  • hbase 4篇
  • hive 5篇
  • zookeeper 3篇
  • sqoop 4篇
  • redis 2篇
  • Flume 2篇
  • kafka 4篇
  • flink 4篇
  • ELK 4篇

最新评论

  • Centos7搭建Hadoop HA完全分布式集群(6台机器)(内含hbase,hive,flume,kafka,spark,sqoop,phoenix,storm)

    myradio126: 为什么kafka配置成这样了 zookeeper.connect=localhost:2181 别人都是把zookeeper集群填上的?

  • 搭建基于MyEclipse的Hadoop开发环境

    激动的小非: 重启myeclipse 后 ant 中没出现.jar包?

  • Spark性能调优系列:(二)数据倾斜(Hive ETL预处理数据方案)

    qqMrrz: 大佬,如果有配上案例代码就更好了表情包

  • Centos7搭建Hadoop HA完全分布式集群(6台机器)(内含hbase,hive,flume,kafka,spark,sqoop,phoenix,storm)

    zijingai: 请问可以分享一下安装包吗

  • Spring Boot---(16)SpringBoot的定时任务(分别有Quartz和Scheduled)

    HDU鬼先生: 这种方式是不是只能加入一种定时任务

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 项目管理:(四)项目范围管理
  • 项目管理:(三)项目整体管理
  • 项目管理:(二)项目立项管理
2023年4篇
2020年8篇
2019年96篇
2018年37篇
2017年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司梅州如何制作网站报价福州关键词排名包年推广宜宾百度网站优化报价滁州SEO按天扣费多少钱平凉优秀网站设计报价桂林网站推广报价定西百度网站优化哪家好泸州企业网站建设推荐荆门网站开发公司朔州高端网站设计哪家好大庆阿里店铺托管价格清远网站改版价格资阳关键词排名报价深圳外贸网站设计公司包头SEO按效果付费阳江建网站报价本溪建站多少钱榆林营销型网站建设推荐枣庄高端网站设计报价雅安外贸网站建设价格忻州SEO按天计费报价金华百度爱采购多少钱阳泉网站建设公司邵阳网站优化推广报价丽水网站设计模板报价莆田网页制作价格广安企业网站改版推荐贵港网页制作价格上饶推广网站多少钱德宏seo网站推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化