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/ 日志记录是应用程序运行中必不可少的一部分.具有良好格式和完备信息的日志记录可以在程序出现问题时帮助开发人员迅速地定位错误的根源.对于开 ...
随机推荐
- SQL Server 公用表表达式(CTE)实现递归的方法
公用表表达式简介: 公用表表达式 (CTE) 可以认为是在单个 SELECT.INSERT.UPDATE.DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集.CTE 与派生表类 ...
- sql distinct去除重复
distinct select distinct * from table1 或者用 group by
- 017-linux正则表达式
一.单字符表示:1.特定字符:某个具体的字符. '1' 'a' '\.'2.范围内单个字符:单个字符[] [0-9] [259] [a-z] [abc] [A-Z] [ABC] [a-zA-Z] [, ...
- BufferedImage操作图片笔记(转)
BufferedImage是Image的一个子类,BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,通常用来做图片修改操作如大小变换.图片变灰. ...
- liunx anacoda 安装pyltp
anacoda 默认的gcc是4.7需要更新 https://anaconda.org/nlesc/gcc 更新之后再安装即可. 报错: /usr/lib64/libstdc++.so.6: vers ...
- git提交时候出错
Please make sure you have the correct access rights and the repository exists. 解决方案: 主要原因是没有加载keygen ...
- 复制控件出错--提示XX控件不存在
有时候比较喜欢复制粘贴,但是结果就是,经常出现XX控件找不到,或者不存在之类的话~~ 错误如下: 在相当郁闷的时候,尝试了一种很土土的方法,就是直接新建一个同名新页面,把前台和后台的代码复制进去~~ ...
- HTML ajax 上传文件限制文件的类型和文件大小
html <input type="file" name="excel" id="excel_input" accept=&qu ...
- 在Java中使用Sqlite数据库
一.安装 下载最新的 Sqlite Jdbc 驱动程序jar文件,并添加到Java工程的class路径下: 二.使用 以 sqlite Jdbc 驱动版本为 sqlitejdbc-v56.jar 为例 ...
- 小黄人IP营销的四种玩法思维导图
小黄人IP营销的四种玩法思维导图 ------------------------------ 本人微信公众帐号: 心禅道(xinchandao) 本人微信公众帐号:双色球预测合买(ssqyuce)