log4j 初体验
1.Log4j简介
- 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作
 - 跟踪代码运行时轨迹,作为日后审计的依据
 - 担当集成开发环境中的调式器的作用,向文件或控制台打印代码的调式信息
 
### 设置### log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
public class Test {
    private static Logger logger = Logger.getLogger(Test.class);
    public static void main(String[] args) {
        // System.out.println("This is println message.");
        // 记录debug级别的信息
        logger.debug("This is debug message.");
        // 记录info级别的信息
        logger.info("This is info message.");
        // 记录error级别的信息
        logger.error("This is error message.");
    }
}
- 日志级别:ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF,不区分大小写
 - 注意,需在控制台输入,只需将其中一个appender定义为stdout即可
 - 注意,rootLogger默认是对整个工程生效
 - 注意,如果只想对某些包操作,那么:log4j.logger.com.hutu=info, stdout,表示该日志对package com.hutu生效
 - 注意,这样做可以区分dev/线上,也可以减小性能影响:if(log.isDebugEnabled()){log.debug();}
 
- ConsoleAppender(控制台)
 - FileAppender(文件)
 - DailyRollingFileAppender(每天产生一个日志文件)
 - RollingFileAppender(文件大小到达指定尺寸时产生一个新的文件)
 - WriteAppender(将日志信息以流格式发送到任意指定的地方)
 - JDBCAppender(将日志信息保存到数据库中)
 
- 其中,appender1是在第一行定义过的;
 - 文件目录及文件,例如,/home/admin/logs/hutudan.log
 - 最大文件大小,例如,100KB
 - 备份文件个数,例如,1
 
- 例如,'.'yyyy-MM-dd
 
- HTMLLayout(以HTML表格形式布局)
 - SimpleLayout(包含日志信息的级别和信息字符串)
 - TTCCLayout(包含日志产生的时间,执行绪,类别等信息)
 - PatternLayout(可以灵活的指定布局格式,常用)
 
- 例如,%d - %m%n或%d{yyyy-MM-dd HH:mm:ss} %p [%c] %m%n
 - %c 输出日志信息所属的类的全名
 - %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-M-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
 - %f 输出日志信息所属的类的类名
 - %l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
 - %m 输出代码中指定的信息,如log(message)中的message
 - %n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
 - %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
 - %r 输出自应用启动到输出该日志信息所耗费的毫秒数
 - %t 输出产生该日志事件的线程名
 - 可参考:http://blog.sina.com.cn/s/blog_4e4dd5570100qowy.html
 
- 例如,不解释,追加往后写便是
 
- Logger类:完成日志记录,设置日志信息级别
 - Appender类:决定日志去向,终端、DB、硬盘
 - Layout类:决定日志输出的样式,例如包含当前线程、行号、时间
 
log4j 初体验的更多相关文章
- Flume日志采集系统——初体验(Logstash对比版)
		
这两天看了一下Flume的开发文档,并且体验了下Flume的使用. 本文就从如下的几个方面讲述下我的使用心得: 初体验--与Logstash的对比 安装部署 启动教程 参数与实例分析 Flume初体验 ...
 - Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用[z]
		
前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊.但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文 ...
 - 高性能无锁队列 Disruptor 初体验
		
原文地址: haifeiWu和他朋友们的博客 博客地址:www.hchstudio.cn 欢迎转载,转载请注明作者及出处,谢谢! 最近一直在研究队列的一些问题,今天楼主要分享一个高性能的队列 Disr ...
 - dubbo实战之一:准备和初体验
		
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
 - .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
		
不知不觉,“.NET平台开源项目速览“系列文章已经15篇了,每一篇都非常受欢迎,可能技术水平不高,但足够入门了.虽然工作很忙,但还是会抽空把自己知道的,已经平时遇到的好的开源项目分享出来.今天就给大家 ...
 - Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验
		
Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...
 - Spring之初体验
		
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
 - Xamarin.iOS开发初体验
		
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKwAAAA+CAIAAAA5/WfHAAAJrklEQVR4nO2c/VdTRxrH+wfdU84pW0
 - 【腾讯Bugly干货分享】基于 Webpack & Vue & Vue-Router 的 SPA 初体验
		
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d13a57132ff21c38110186 导语 最近这几年的前端圈子,由于 ...
 
随机推荐
- SQL Server 数据库部分常用语句小结(一)
			
1. 查询某存储过程的访问情况 SELECT TOP 1000 db_name(d.database_id) as DBName, s.name as 存储名字, s.type_desc as 存储类 ...
 - c/c++ 多线程 等待一次性事件 packaged_task用法
			
多线程 等待一次性事件 packaged_task用法 背景:不是很明白,不知道为了解决什么业务场景,感觉std::asynck可以优雅的搞定一切,一次等待性事件,为什么还有个packaged_tas ...
 - js字符串String提取方法比较
			
JavaScript: Slice, Substring, or Substr的选择! 在JavaScript中,字符串主要通过以下String方法之一提取: // slice // syntax: ...
 - Python爬虫【实战篇】bilibili视频弹幕提取
			
两个重要点 1.获取弹幕的url是以 .xml 结尾 2.弹幕url的所需参数在视频url响应的 javascript 中 先看代码 import requests from lxml import ...
 - js 设备判断(移动端pc端 安卓ios 微信)
			
苹果安卓判断 $(function () { var u = navigator.userAgent, app = navigator.appVersion; var isAndroid = u.in ...
 - MySQL之表相关操作
			
一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:http://www.cnblogs.com/linhaifeng/articles/7213670.html ...
 - 返回数组中指定的一列,将键值作为元素键名array_column
			
array_column() 函数 从记录集中取出 last_name 列: <?php // 表示由数据库返回的可能记录集的数组 $a = array( array( 'id' => 5 ...
 - uWSGI、WSGI和uwsgi
			
WSGI wsgi server (比如uWSGI) 要和 wsgi application(比如django )交互,uwsgi需要将过来的请求转给django 处理,那么uWSGI 和 djang ...
 - java面试准备之面向对象
			
面向对象 下面列出了面向对象软件开发的优点: (1) 代码开发模块化,更易维护和修改. (2) 代码复用. (3) 增强代码的可靠性和灵活性. (4) 增加代码的可理解性. 面向对象编程有很多重要的特 ...
 - Kaggle教程——大神教你上分
			
本文记录笔者在观看Coursera上国立经济大学HLE的课程 How to win a data science competetion中的收获,和大家分享.课程的这门课的讲授人是Kaggle的大牛, ...