Log4j常用配置及使用
Log4j常用配置及使用
2016-12-14
目录
1 添加log4j依赖
2 使用代码配置并调用log
2.1 代码配置LogConfiguration.java
2.2 调用
2.3 结果
3 使用Properties文件配置并调用
3.1 文件配置log4j.properties
3.2 调用
3.3 结果
4 按输出级别的种类保存内容到不同目的地
4.1 文件配置log4j.properties
4.2 调用
4.3 结果
参考
1 添加log4j依赖
maven的pom.xml文件中添加log4j依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<scope>provided</scope>
</dependency>
2 使用代码配置并调用log
2.1 代码配置LogConfiguration.java
import java.util.Properties;
import org.apache.log4j.PropertyConfigurator; public class LogConfiguration {
public static void initLog(String logFilePath){
//声明日志文件存储路径以及文件名、格式
Properties prop = new Properties();
//配置日志输出的格式
prop.setProperty("log4j.rootLogger","info, toConsole, toFile");
prop.setProperty("log4j.appender.file.encoding","UTF-8" ); prop.setProperty("log4j.appender.toConsole","org.apache.log4j.ConsoleAppender");
prop.setProperty("log4j.appender.toConsole.Target","System.out");
prop.setProperty("log4j.appender.toConsole.layout","org.apache.log4j.PatternLayout ");
prop.setProperty("log4j.appender.toConsole.layout.ConversionPattern","[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n"); prop.setProperty("log4j.appender.toFile.file", logFilePath);
//每天产生一个日志文件
prop.setProperty("log4j.appender.toFile", "org.apache.log4j.DailyRollingFileAppender");
//服务器启动日志是追加,false:服务器启动后会生成日志文件把老的覆盖掉
prop.setProperty("log4j.appender.toFile.Append","true");
prop.setProperty("log4j.appender.toFile.Threshold", "info");
prop.setProperty("log4j.appender.toFile.layout", "org.apache.log4j.PatternLayout");
prop.setProperty("log4j.appender.toFile.layout.ConversionPattern", "[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n");
//[2017-03-31 14:10:44] [ERROR] HttpResponseAnalyze:31 - Not equal
//prop.setProperty("log4j.appender.toFile.layout.ConversionPattern", "[%d{yyyy-MM-dd HH:mm:ss}] [%p] %c{1}:%L - %m%n");
//设置每天生成一个文件名后添加的名称,备份名称:年月日.log
prop.setProperty("log4j.appender.toFile.DatePattern","'.'yyyy-MM-dd'.log'");
//使配置生效 PropertyConfigurator.configure(prop); } }
2.2 调用
import org.apache.log4j.Logger; public class TestLog {
static Logger logger = Logger.getLogger(TestLog.class.getName()); public static void main(String[] args) {
LogConfiguration.initLog("D:\\log\\result.log");
logger.info("log info");
logger.warn("log warn");
logger.error("log error"); try {
Thread.sleep(2000);
}
catch(Exception ex)
{} logger.info("log1 info");
logger.warn("log1 warn");
logger.error("log1 error");
}
}
2.3 结果
输出到Ecliplse的Console界面和文件D:\log\result.log中,内容如下:
[2016-12-14 16:03:34] [INFO] log info
[2016-12-14 16:03:34] [WARN] log warn
[2016-12-14 16:03:34] [ERROR] log error
[2016-12-14 16:03:36] [INFO] log1 info
[2016-12-14 16:03:36] [WARN] log1 warn
[2016-12-14 16:03:36] [ERROR] log1 error
另外,由于配置了每天生成一个备份,系统时间切一天后日后,再运行,原先的result.log会变成result.log.2016-12-13.log,新的日志会重新放到新建的日志文件result.log
3 使用Properties文件配置并调用log
3.1 文件配置log4j.properties
log4j.rootLogger=INFO, toConsole, toFile
log4j.appender.file.encoding=UTF-8 log4j.appender.toConsole=org.apache.log4j.ConsoleAppender
log4j.appender.toConsole.Target=System.out
log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.toConsole.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n log4j.appender.toFile.file=D:\\log\\result.log
#Daily one log file
log4j.appender.toFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.toFile.Append=true
log4j.appender.toFile.Threshold=info
log4j.appender.toFile.layout=org.apache.log4j.PatternLayout
log4j.appender.toFile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
log4j.appender.toFile.DatePattern='.'yyyy-MM-dd'.log'
3.2 调用
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; public class TestLog {
static Logger logger = Logger.getLogger(TestLog.class.getName()); public static void main(String[] args) {
PropertyConfigurator.configure( "D:\\Users\\...\\config\\log4j.properties" );
logger.info("log info");
logger.warn("log warn");
logger.error("log error"); try {
Thread.sleep(2000);
}
catch(Exception ex)
{} logger.info("log1 info");
logger.warn("log1 warn");
logger.error("log1 error");
}
}
3.3 结果
和上面一致
4 按输出级别的种类保存内容到不同目的地
从高到低:ERROR、WARN、INFO、DEBUG
- ERROR 为严重错误 主要是程序的错误
- WARN 为一般警告,比如session丢失
- INFO 为一般要显示的信息,比如登录登出
- DEBUG 为程序的调试信息
4.1 文件配置log4j.properties
log4j.rootLogger=INFO, toConsole
log4j.appender.file.encoding=UTF-8 log4j.appender.toConsole=org.apache.log4j.ConsoleAppender
log4j.appender.toConsole.Target=System.out
log4j.appender.toConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.toConsole.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n log4j.logger.myError=ERROR, toFile
log4j.appender.toFile.file=D:\\log\\Errors.log
#Daily one log file
log4j.appender.toFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.toFile.Append=true
log4j.appender.toFile.Threshold=info
log4j.appender.toFile.layout=org.apache.log4j.PatternLayout
log4j.appender.toFile.layout.ConversionPattern=[%d{yyyy-MM-dd HH:mm:ss}] [%p] %m%n
log4j.appender.toFile.DatePattern='.'yyyy-MM-dd'.log'
4.2 调用
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator; public class TestLog {
static Logger logger = Logger.getLogger(TestLog.class.getName());
static Logger errorLogger=Logger.getLogger("myError"); public static void main(String[] args) {
PropertyConfigurator.configure( "D:\\Users\\...\\config\\log4j.properties" );
logger.info("log info");
logger.warn("log warn");
logger.error("log error"); errorLogger.info("myError info");
errorLogger.warn("myError warn");
errorLogger.error("myError error");
}
}
4.3 结果
Eclipse的Console界面
[2016-12-13 17:45:06] [INFO] log info
[2016-12-13 17:45:06] [WARN] log warn
[2016-12-13 17:45:06] [ERROR] log error
[2016-12-13 17:45:06] [ERROR] myError error
Errors.log
[2016-12-13 17:45:06] [ERROR] myError error
参考
[2] log4j.properties log4j.xml 路径问题
[4] log4j简单案例
//设置每天生成一个文件名后添加的名称,备份名称:年月日.log
Log4j常用配置及使用的更多相关文章
- log4j常用配置以及日志文件保存位置
log4j.rootLogger=INFO,CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender ...
- (三)log4j常用配置
控制台(console) log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = ...
- 【转】logback 常用配置详解(序)logback 简介
原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...
- commons-logging和Log4j 日志管理/log4j.properties配置详解
commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...
- logback常用配置详解及logback简介
logback 简介(一) Ceki Gülcü在Java日志领域世界知名.他创造了Log4J ,这个最早的Java日志框架即便在JRE内置日志功能的竞争下仍然非常流行.随后他又着手实现SLF4J 这 ...
- java日志框架log4j详细配置及与slf4j联合使用教程
最后更新于2017年02月09日 一.log4j基本用法 首先,配置log4j的jar,maven工程配置以下依赖,非maven工程从maven仓库下载jar添加到“build path” <d ...
- Tomcat记录-tomcat常用配置详解和优化方法(转载)
常用配置详解 1 目录结构 /bin:脚本文件目录. /common/lib:存放所有web项目都可以访问的公共jar包(使用Common类加载器加载). /conf:存放配置文件,最重要的是serv ...
- [转]logback常用配置简介
logback是一套日志框架,由log4j的优化版,由同一个作者开发,在速度和性能上都超过其他日志框架,再结合slf4j,已成为当前最流行的日志框架. Logback最常用就是在classpath定义 ...
- log4j日志配置(按天/按日)
项目中尽管对log4j有基本的配置,例如按天生成日志文件以作区分,但如果系统日志文件过大,则就需要考虑以更小的单位切分或者其他切分方式.下面就总结一下log4j常用的配置参数以及切分日志的不同方式. ...
随机推荐
- exeption ORA-00907: missing right parenthesis
exeption ORA-00907: missing right parenthesis CreationTime--2018年8月16日11点11分 Author:Marydon 1.情景展示 ...
- import 如何工作
# -*- coding: utf-8 -*- #python 27 #xiaodeng #import 如何工作 #程序第一次导入指定文件时,会执行三个步骤 #1)找到模块文件 #2)编译成位码(需 ...
- SpringMVC之ModelAndView的用法(转)
原文地址:https://blog.csdn.net/qq30211478/article/details/78016155 (一)使用ModelAndView类用来存储处理完后的结果数据,以及显示该 ...
- CentOS 7 网络磁盘挂载到本地 并测试传输速度
本文中的配置只做测试使用,正式环境中考虑到安全,请自行结合网上介绍的配置细节完善配置内容. 首先明确两个概念,服务器和客户端(本地),我们要做的是将服务端的硬盘上的/home/liuyx 目录挂载到本 ...
- mariadb多实例搭建
测试环境基于centos7.2,腾讯云实验室,学习搭建! https://www.qcloud.com/developer 多实例mysql,能更加理解mysql安装的基本过程!及简单使用... ma ...
- OpenWrt设置访客网络Guest Wi-Fi
参考 https://wiki.openwrt.org/doc/recipes/guest-wlan-webinterface 1. 在2.4GHz Wireless Controller下, 创建访 ...
- 首页设计的可用性和PET
网站的首页是一个让人头疼的东西.有时它看起来很简单:首页就是网站内容的整合,一个产品经理随便从网站里拿点东西出来,就能堆出一个看上去靠谱的首页.也正因此,它往往非常麻烦:很多人都可以发表自己的见解,而 ...
- document.body、document.documentElement和window获取视窗大小的差别
来源:http://www.ido321.com/906.html 在w3school关于window对象的介绍中,介绍了获取浏览器窗体大小的三种方法(浏览器的视口,不包含工具栏和滚动栏). 对于In ...
- 在oracle数据库表中没有添加rowid字段为什么会出现?
rowid 是 oracle 数据库表中的伪列, rowid 首先是一种数据类型,它唯一标识一条记录物理位置, 基于64位编码的18个字符显示.因为 rowid 是伪列, 所以并未真的存储在表中,但可 ...
- java 快速求素数
package test ; import java.util.Scanner ; public class hello { public static void main(String [] arg ...