1. 新建类文件:
 import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; /**
* 记录日志到指定文件
*
* @author He
* @date 2018/5/16
*/
public class Log4jDemo { static Logger logger = Logger.getLogger(Log4jDemo.class); public static void main(String[] args) {
PropertyConfigurator.configure("config/log4j.properties");
logger.info("我记录在Log4jDemo 文件中....");
logger.error("在Log4jDemo 文件中出现异常....");
}
}

  2. 在项目根目录下(即与src平级)创建config文件夹,新建log4j.properties 文件

配置如下:

# 声明日志类型
log4j.rootLogger = INFO,log4jDemo,test # 配置1 - 即日志Id名为 com.exampl.log.Log4jDemo 的日志配置(通俗来讲就是日志的标识,只不过该标识可在多个类中调用)
log4j.logger.log4jDemo=com.exampl.log.Log4jDemo
log4j.additivity.log4jDemo = false
log4j.appender.log4jDemo=org.apache.log4j.RollingFileAppender
# 输出级别(如果定义的ERROR级别,那么打印的INFO级别的日志就不会记录在文件中,因为INFO的级别比ERROR要)
log4j.appender.log4jDemo.Threshold=ERROR
# 输出的日志文件位置及文件名称
log4j.appender.log4jDemo.File=logs/Log4jDemo.log
# 布局类型
log4j.appender.log4jDemo.layout=org.apache.log4j.PatternLayout
# 布局模板
log4j.appender.log4jDemo.layout.ConversionPattern=%d %-5p [%l] - %m%n
# 输出的日志文件的最大文件大小,单位b(字节)
log4j.appender.log4jDemo.MaxFileSize=5242880
# 日志的循环周期
log4j.appender.log4jDemo.MaxBackupIndex=3

运行main方法 日志输出如下:

  3.关于log4j.properties 一些配置:

  • 日志输出级别,共有5级: 
FATAL      0
ERROR 3
WARN 4
INFO 6
DEBUG 7
  • Appender 为日志输出目的地,Log4j提供的appender有以下几种:
org.apache.log4j.ConsoleAppender(控制台),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
  • Layout:日志输出格式,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
  • 打印参数: Log4J采用类似C语言中的printf函数的打印格式格式化日志信息,如下:
  %m   输出代码中指定的消息
  %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL
  %r 输出自应用启动到输出该log信息耗费的毫秒数
  %c 输出所属的类目,通常就是所在类的全名
  %t 输出产生该日志事件的线程名
  %n 输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
  %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日 22 : 10 : 28 , 921
  %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )
  • 在代码中初始化Logger:

1)在程序中调用BasicConfigurator.configure()方法:给根记录器增加一个ConsoleAppender,输出格式通过PatternLayout设为"%-4r [%t] %-5p %c %x - %m%n",还有根记录器的默认级别是Level.DEBUG. 
2)配置放在文件里,通过命令行参数传递文件名字,通过PropertyConfigurator.configure(args[x])解析并配置;
3)配置放在文件里,通过环境变量传递文件名等信息,利用log4j默认的初始化过程解析并配置;
4)配置放在文件里,通过应用服务器配置传递文件名等信息,利用一个特殊的servlet来完成配置。

  • 日志文件生成周期的定义:
rollover次数 输出的目标 压缩的日志文件 描述
1 foo.log foo-1.log 在第一次rollover时,foo.log会被重命名为foo-1.log。同时会创建一个新的foo.log并开始写入。
2 foo.log foo-1.log, foo-2.log 在第二次发生rollover时,foo-1.log会重命名为foo-2.log并且foo.log会重命名为foo-1.log。同时会创建一个新的foo.log并开始写入。
3 foo.log foo-1.log, foo-2.log, foo-3.log 在第三次发生rollover时,foo-2.log会重命名为foo-3.log。foo-1.log重命名为foo-2.log,foo.log会重命名为foo-1.log。同时会创建一个新的foo.log并开始写入。
4 foo.log foo-1.log, foo-2.log, foo-3.log 在第四次和随后的rollover时,foo-3.log会被删除,foo-2.log重命名为foo-3.log。foo-1.log重命名为foo-2.log。foo.log重命名为foo-1.log。后面同理

    每次当文件达到指定文件大小(MaxFileSize)时,日志文件就会按上述规则来生成。

log4j记录日志到指定文件的更多相关文章

  1. log4j 根据类名指定文件

    log4j.logger.io.netty=INFO, stdout, spiderlog4j.logger.com.ld.net.spider=INFO, stdout, spider log4j. ...

  2. 有效Log4j按指定级别定向输出日志到指定的输出文件地址配置Threshold,log4j中如何屏蔽父logger输出源rootlogger的additivity配置,log4j向多个文件记录日志

    log4j向多个文件记录日志 关键配置,指定想要的日志级别信息输出到指定的日志文件中: log4j.appender.errorLogger.Threshold=ERROR #扩展,可指定只在子类自己 ...

  3. 浅谈如何使用Log4j记录日志

    一.什么是log4j Log4J是Apache的一个开放源代码的项目.通过使用Log4J,程序员可以控制日志信息输送的目的地,包括控制台,文件,GUI组件和NT事件记录器,也可以控制每一条日志的输出格 ...

  4. 使用log4j记录日志

    目录 log4j的优点 导入log4j的jar包 log4j的错误级别 log4j日志的输出目的地 log4j的配置示例 log4j的全局配置讲解 控制台日志的配置讲解 日志输出文件的配置讲解 使用l ...

  5. JAVA中使用LOG4J记录日志(转)

    在项目开发中,记录错误日志是一个很有必要功能.一是方便调试:二是便于发现系统运行过程中的错误:三是存储业务数据,便于后期分析: 在java中,记录日志,有很多种方式. 比如,自己实现. 自己写类,将日 ...

  6. JAVA中使用LOG4J记录日志

    在项目开发中,记录错误日志是一个很有必要功能.一是方便调试:二是便于发现系统运行过程中的错误:三是存储业务数据,便于后期分析: 在java中,记录日志,有很多种方式. 比如,自己实现. 自己写类,将日 ...

  7. log4j输出日志到文件

    输出端Appender Appender用来指定日志信息输出到哪个地方,可以同时指定多个输出目的地.Log4j允许将信息输出到许多不同的输出设备中,一个log信息输出目的地就叫做一个Appender. ...

  8. 使用commons-logging和log4j记录日志

    一,为什么要使用commons-logging+log4j? commons-logging和log4j都是Apache下的开源项目.commons-logging的目的是为“所有的Java日志实现” ...

  9. log4j源码解析-文件解析

    承接前文log4j源码解析,前文主要介绍了log4j的文件加载方式以及Logger对象创建.本文将在此基础上具体看下log4j是如何解析文件并输出我们所常见的日志格式 附例 文件的加载方式,我们就选举 ...

随机推荐

  1. CentOS7防火墙firewalld使用

    1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status f ...

  2. Git和Github入门

    推文:官方手册,十分详细 推文:git和github快速入门 一.git使用 1.git安装 (1)windows 网站:https://git-scm.com/download/win下载安装即可 ...

  3. css overflow用法

    1. overflow-y: auto 侧边栏滚动效果:overflow-y:auto 2. overflow-y: scroll 如果使用overflow:scroll的话,滚动条就一直都在,页面不 ...

  4. angularJS__v1.5.6点击同一个菜单刷新

    针对angularjs的1.0版本,点击菜单不刷新问题,只需在配置路由时,路由路径添加“/”,如,点击 标签时,就会刷新,

  5. bzoj千题计划130:bzoj1305: [CQOI2009]dance跳舞

    http://www.lydsy.com/JudgeOnline/problem.php?id=1305 每个人拆为喜欢(yes)和不喜欢(no)两个点 二分答案 1.每两个人之间只能跳一次 喜欢则 ...

  6. bzoj千题计划120:bzoj1032[JSOI2007]祖码Zuma

    http://www.lydsy.com/JudgeOnline/problem.php?id=1032 https://www.luogu.org/discuss/show?postid=8416 ...

  7. 洛谷P2424/codevs 2606 约数和

    http://codevs.cn/problem/2606/ https://luogu.lohu.info/problem/show?pid=2424 题目背景 Smart最近沉迷于对约数的研究中. ...

  8. Spring boot学习总结

    引言之前也没有深入学习过spring框架,最近SpringBoot流行起来后想补下这方面的知识,于是照着SpringBoot官网上的英文教程开始helloworld入门,踩到几个小坑,记录下学习流程. ...

  9. uploadify IE11 不兼容问题(不显示图片)

    1.进入uploadify官网demo  :  http://www.uploadify.com/demos/ 2.  显示   (确认flash为最新版本) 3.更换其它浏览器一切正常 4.原因:I ...

  10. java正则:不包含某个规则字符串【转】

    概述 做日志分析工作的经常需要跟成千上万的日志条目打交道,为了在庞大的数据量中找到特定模式的数据,常常需要编写很多复杂的正则表达式.例如枚举出日志文件中不包含某个特定字符串的条目,找出不以某个特定字符 ...