Java使用Log4记录日志
我们在系统使用中,为了方便查找问题,因此需要记录操作的日志,而目前比较成熟稳定的程序日志记录方式就是Log4,本人也是菜鸟,然后再学习研究中就记录一下使用方式,以方便今后查阅,同时本文章参考了博客园:http://www.cnblogs.com/zhangpengshou/p/5128050.html 的文章,在此表示感谢。
Log4有1.x版本和2.x版本,两个版本的使用方式有很大区别,为了方便在此使用2.x版本。
代码很简单,首先要配置xml,在类的同级创建log4j2.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <configuration status="error">
<!--先定义所有的appender-->
<appenders>
<!--这个输出控制台的配置-->
<Console name="Console" target="SYSTEM_OUT">
<!--这个是输出日志的格式-->
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</Console>
<!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,适合临时测试用-->
<File name="Error" fileName="E:/logs/error.log" append="false">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="记录时间:%date%n线程ID:[%thread] %n日志级别:%-5level%n记录位置:%location%n消息描述:%property{Message}%n异常:%exception%n消息:%message%newline%n------------------------------------------%n"/>
</File> <!--这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
<RollingFile name="RollingFile" fileName="E:/logs/history.log"
filePattern="E:/log/$${date:yyyy-MM}/history-%d{MM-dd-yyyy}-%i.log.gz">
<PatternLayout pattern="记录时间:%date%n线程ID:[%thread] %n日志级别:%-5level%n记录位置:%location%n消息描述:%property{Message}%n异常:%exception%n消息:%message%newline%n------------------------------------------%n"/>
<SizeBasedTriggeringPolicy size="50MB"/>
</RollingFile>
</appenders>
<!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
<loggers>
<!--建立一个默认的root的logger-->
<root level="trace">
<appender-ref ref="Error"/>
<appender-ref ref="RollingFile"/>
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
代码里面都有注释,在此不做详细解说了,关于Log4的其它配置可百度一下。Java代码使用方式如下:
import java.io.File;
import java.util.List; import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; public class Hello {
private static Logger logger = LogManager.getLogger(Hello.class); public static void main(String[] args) {
logger.debug("测试");
logger.error("错误消息");
}
}
鸣谢:http://www.cnblogs.com/zhangpengshou/p/5128050.html
===============================================================================================
下面提供一个log4j1.x版本的实现(log4j.properties):
# - level, OFF/FATAL/ERROR/WARN/INFO/DEBUG/ALL 定义全局变量,后面有引用
log.name=bocai-thrift
log.dir=/data1/bocai/apps/bocai-thrift/log ###
log4j.logger.org.apache.kafka=WARN
log4j.logger.org.elasticsearch=WARN
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.io.netty=WARN
log4j.logger.com.alibaba.druid=WARN
log4j.logger.org.mongodb.driver=WARN ### globel
log4j.rootLogger=DEBUG,console,debuglog,log,errorlog,logstash
log4j.additivity.org.apache=true ### console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.err
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{}.%M(%L) - %m%n ### debug
log4j.appender.debuglog=org.apache.log4j.RollingFileAppender
log4j.appender.debuglog.File=${log.dir}/${log.name}-debug.log
log4j.appender.debuglog.Append=true
log4j.appender.debuglog.Threshold=DEBUG
log4j.appender.debuglog.MaxFileSize=16MB
log4j.appender.debuglog.MaxBackupIndex=
log4j.appender.debuglog.layout=org.apache.log4j.PatternLayout
log4j.appender.debuglog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{}.%M(%L) - %m%n ### log
log4j.appender.log=org.apache.log4j.DailyRollingFileAppender
log4j.appender.log.File =${log.dir}/${log.name}.log
log4j.appender.log.Threshold=INFO
log4j.appender.log.Append=true
log4j.appender.log.DatePattern='.'yyyy-MM-dd
log4j.appender.log.layout=org.apache.log4j.PatternLayout
log4j.appender.log.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{}.%M(%L) - %m%n ### error
log4j.appender.errorlog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorlog.File =${log.dir}/${log.name}-error.log
log4j.appender.errorlog.Append=true
log4j.appender.errorlog.Threshold=ERROR
log4j.appender.errorlog.DatePattern='.'yyyy-MM-dd
log4j.appender.errorlog.layout=org.apache.log4j.PatternLayout
log4j.appender.errorlog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %c{}.%M(%L) - %m%n ### logstash 推送到es数据库里面
log4j.appender.logstash=org.apache.log4j.net.SocketAppender
log4j.appender.logstash.RemoteHost=192.168.23.79
log4j.appender.logstash.port=
log4j.appender.logstash.ReconnectionDelay=
log4j.appender.logstash.LocationInfo=true
Java使用Log4记录日志的更多相关文章
- JAVA - 优雅的记录日志(log4j实战篇)
写在前面 项目开发中,记录错误日志有以下好处: 方便调试 便于发现系统运行过程中的错误 存储业务数据,便于后期分析 在java中,记录日志有很多种方式: 自己实现 自己写类,将日志数据,以io操作方式 ...
- JAVA - 优雅的记录日志(log4j实战篇) (转)
写在前面 项目开发中,记录错误日志有以下好处: 方便调试 便于发现系统运行过程中的错误 存储业务数据,便于后期分析 在java中,记录日志有很多种方式: 自己实现 自己写类,将日志数据,以io操作方式 ...
- java 异常与记录日志
一. 你可能还想利用java.util.logging工具将输出记录到日志中 package exceptions; //: exceptions/LoggingExceptions.java // ...
- C#中使用Log4记录日志
具体步骤如下: 从网上下载log4net对应.net版本的dll 在C#项目中引用该dll 创建log4net对应的配置文件 在程序中使用 log4net的配置文件如下: <?xml versi ...
- Java使用logback记录日志时分级别保存文件
说明:一般情况下logback可以指定类使用什么样的级别显示输出日志,并且同一类可以指定不能级别,然后对应级别进行输出日志. 第一种配置: <?xml version="1.0&quo ...
- Java 使用slf4j记录日志
引入依赖 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12< ...
- JAVA中使用LOG4J记录日志(转)
在项目开发中,记录错误日志是一个很有必要功能.一是方便调试:二是便于发现系统运行过程中的错误:三是存储业务数据,便于后期分析: 在java中,记录日志,有很多种方式. 比如,自己实现. 自己写类,将日 ...
- JAVA中使用LOG4J记录日志
在项目开发中,记录错误日志是一个很有必要功能.一是方便调试:二是便于发现系统运行过程中的错误:三是存储业务数据,便于后期分析: 在java中,记录日志,有很多种方式. 比如,自己实现. 自己写类,将日 ...
- Java 日志管理最佳实践
转:http://blog.jobbole.com/51155/ 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开 ...
随机推荐
- 形象易懂讲解算法I——小波变换
https://zhuanlan.zhihu.com/p/22450818?refer=dong5 最早发于回答:能不能通俗的讲解下傅立叶分析和小波分析之间的关系? - 咚懂咚懂咚的回答现收入专栏. ...
- linux常用命令:find 命令参数详解
find一些常用参数的一些常用实例和一些具体用法和注意事项. 1.使用name选项: 文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用. 可以使用某种文件名模式来匹配 ...
- python之路----网络编程--黏包
黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ; lllllll ; pwd) res=subprocess.Popen(cmd.decode('utf-8'), shell ...
- pyDay4
内容来自廖雪峰的官方网站 1.关键字参数有什么用?它可以扩展函数的功能. 2.参数定义的顺序必须是:必选参数.默认参数.可变参数.命名关键字参数和关键字参数. 3.对于任意函数,都可以通过类似func ...
- 从JavaWeb的角度认识Nginx
作为一名JavaWeb方向程序员,更多的是写服务器后台代码,但是俗话说,不想当架构师的程序员不是好程序员,我们要对并发.负载等词汇进行深入探索. 一.重新认识Tomcat Tomcat属于轻量级的We ...
- Mysql优化_内置profiling性能分析工具
如果要进行SQL的调优优化和排查,第一步是先让故障重现,但是这个并不是这一分钟有问题,下一秒就OK.一般的企业一般是DBA数据库工程师从监控里找到问题.DBA会告诉我们让我们来排查问题,那么可能很多种 ...
- read progress
<GNU+make中文手册-v3.80> 14 跟我一起写 Makefile 8 51单片机及c语言程序开发实例7/20/465
- 从Oracle到MySQL,余额宝云实践分享
原文链接:http://www.csdn.net/article/2013-11-/2817426-interview-financial-case-yuerbao-aliyun07 余额宝.百度百发 ...
- 20145216史婧瑶《网络对抗》逆向及Bof进阶实践
20145216史婧瑶<网络对抗>逆向及Bof进阶实践 基础知识 Shellcode实际是一段代码,但却作为数据发送给受攻击服务器,将代码存储到对方的堆栈中,并将堆栈的返回地址利用缓冲区溢 ...
- 20145317《网络对抗》shellcode注入&Return-to-libc攻击深入
20145317<网络对抗>shellcode注入&Return-to-libc攻击深入 学习任务 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻 ...