log4j 1.2 配置和使用简述
本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/log4j_properties_simple_introduction
简述
使用log4j可以根据配置文件控制输出日志的级别,记录到文件、命令行等的位置,不需要代码上的更改。
日志在一定程度上会影响性能,特别是高并发环境。一般更建议使用log4j 2.x,在性能上有较大的提高,由于hadoop 2.7使用的log4j 1.2,下面主要写这一版本。
- 根据日志级别记录日志 (logger上设置)
- 运行时决定具体的记录位置(appender上设置)和日志格式(layout上设置)
一些概念
日志级别(priority,代码里为level)
日志级别从低到高为trace, debug, info, warn, error, fatal。默认级别为info,低于设置级别的日志不会被打印。
常用组件
一般情况下常设置的组件有logger,appender, layout。
用类的方式表达三个组件的关系为
Logger{
name;
level; // 控制日志级别
appenderList; // 可对应多个appender
}
Appender{
name; // 控制文件位置 如fileAppender
layout; // 控制格式
filter; // 过滤部分日志
}
logger
logger以一种树状关系管理日志的类型,log4j.rootCategory为根节点,如果没有标记 log4j.additivity.MyLogger = false ,则子logger会默认继承上一级的设置。
通过树的组织形式,对不同的包中的不同的类,可以分别设置不同的日志方式。
通过点表示层级,如com.foo为com.foo.Bar的上级
关于category,早期的log4j使用category较多,但在log4j 1.2之后,建议使用logger代替category。
appender
主要用于
- 控制日志的输出位置,当前支持the console, files, GUI components, remote socket servers, NT Event Loggers, and remote UNIX Syslog daemons.
- 控制日志的格式(通过下面的layout)
一个logger能够指定多个appender,使日志记录在多个位置。
layout
用于控制日志的格式,一个典型的格式为
%r [%t]%-5p %c - %m%n 会得到:
176 [main] INFO org.foo.Bar - Located nearest gas station.
上面的日志分别对应:程序运行时间 线程 优先级 category的名称 日志信息
log4j.properties 配置
提供了两种动态的配置方式,一种使用配置文件log4j.properties(更建议),另一种使用java代码直接配置。
一般涉及:
- 配置rootLogger (配置全局的appender和priority)
- 配置子logger (配置指定类的appender和priority)
- 配置appender (配置日志记录的位置等属性)
- 配置layout (配置日志输出的格式)
示例
# root logger 的level和对应的appender (fileAppender在后面定义)
log4j.rootLogger=info, fileAppender
# 定义fileAppender 为 File appender
log4j.appender.fileAppender=org.apache.log4j.FileAppender
log4j.appender.fileAppender.File=/home/abc/test
# 定义 fileAppender 的 layout
log4j.appender.fileAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.fileAppender.layout.conversionPattern=%m%n
# 子logger配置 针对com.a.Test4log这个类 设置为System.err的输出
log4j.logger.com.a.Test4log = INFO, myConsole
# 输出到标准err的appender
log4j.appender.myConsole=org.apache.log4j.ConsoleAppender
log4j.appender.myConsole.target=System.err
# 定义layout输出格式
log4j.appender.myConsole.layout=org.apache.log4j.PatternLayout
log4j.appender.myConsole.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n myConsole
分层的语法略奇葩,而且前面可以用到后面定义的变量。
java代码调用
Log log = LogFactory.getLog(Test4log.class);
log.info("test");
程序会在classpath下查找log4j.properties,因此一般放在src/main/resources文件夹下
log4j 1.2 配置和使用简述的更多相关文章
- log4j的Appenders配置
因为是刚开始使用log4j,很多配置方面的东西都不懂,记录下. 下面是我用STS(Spring Tool Suite)新建Spring MVC项目的时候,帮我自动生成的一个log4j.xml配置文件. ...
- (转)log4j(六)——log4j.properties简单配置样例说明
一:测试环境与log4j(一)——为什么要使用log4j?一样,这里不再重述 1 老规矩,先来个栗子,然后再聊聊感受 (1)使用配文件的方式,是不是感觉非常的清爽,如果不在程序中读取配置文件就更加的清 ...
- log4j使用和配置详解
日志是应用软件中不可缺少的部分,Apache的开源项目Log4j是一个功能强大的日志组件,提供方便的日志记录.以下是个人经验,具体请参考Log4j文档指南. Log4j下载 在apache网站:htt ...
- Log4j – Configuring Log4j 2 - Log4j 2的配置
Configuration Inserting log requests into the application code requires a fair amount of planning an ...
- Activiti中的log4j(slf4j)的配置
今天试了一下在Activiti中使用log4j来进行配置发现这个会出现问题,其实Activiti中的日志系统是采用的是slf4j而不是log4j 然后使用slf4j驱动log4j来做的 通过Proce ...
- Maven项目引入log4j的详细配置
注:本文来源于 _xiaoxiong <Maven项目引入log4j的详细配置> 引入log4j pom.xml <dependency> <groupId>lo ...
- Log4j 日志操作包配置详解
log4j简介 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护 ...
- Java log4j slf4j 日志配置笔记
http://www.cnblogs.com/Scott007/p/3269018.html 日志的打印,在程序中是必不可少的,如果需要将不同的日志打印到不同的地方,则需要定义不同的Appender, ...
- Log4j1的使用与log4j.properties的配置
这里介绍Log4j1(即Log4j 1.x版本),这里以普通的Java项目为例,用eclipse编写,项目结构如下图所示: 该项目主要包括: java文件:Log4jv1Util 以及 Log4jv1 ...
随机推荐
- webpack 打包器
创建目录mkdir demo && cd demo 产生package.json执行 npm init -y 先全局安装webpack和webpack-clinpm install w ...
- python中通过selenium简单操作及xpath元素定位&轴定位
浏览器的简单操作 # 导入webdriver模块 # 创建driver对象,指定Chrome浏览器 driver = webdriver.Chrome() # 窗口最大化 driver.maximiz ...
- 30个关于Shell脚本的经典案例(中)
本文目录 11.iptables自动屏蔽访问网站频繁的IP 12.判断用户输入的是否为IP地址 13.判断用户输入的是否为数字 14.给定目录找出包含关键字的文件 15.监控目录,将新创建的文件名追加 ...
- 【转载】C#使用ToList()将数组快速转换为List集合
在C#的编程中,数组和List集合是比较常用的两个集合类,有时候因为业务需要,需要将数组集合转换为List集合,此时就可以使用C#中的Linq的扩展方法ToList方法来实现,只需要简单的一条语句即可 ...
- ora121 tips
1. 900929 - Linux: STORAGE_PARAMETERS_WRONG_SET and "mmap() failed" Solution Increase the ...
- 使用sudo进行Linux权限升级技巧
0x00 前言 在我们之前的文章中,我们讨论了如何使用SUID二进制文件和/etc/passwd 文件的Linux权限提升技巧,今天我们发布了另一种“使用Sudoers文件进行Linux权限提示技巧” ...
- 缓冲区溢出漏洞 ms04011
DSScan使用 扫描目标主机是否存在ms04011漏洞 getos使用 获取操作系统类型 > getos.exe 192.168.1.101 ------------------------- ...
- Java 单例类
单例类:该类只能创建一个实例,或者说内存中只有一个实例,该类的对象引用的都是这个实例. 示例: package my_package; //定义一个单例类 class Singleton{ //使用一 ...
- Node.js 项目中解决 SQL 注入和 XSS 攻击
1.SQL 注入 SQL 注入,一般是通过把 SQL 命令插入到 Web 表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的 SQL 命令. SQL 注入示例 在登录界面,后端会根 ...
- unittest管理接口用例(数据分离-读取excel)
1.简单读取 #coding=utf-8 #调用封装好的excel读取公共方法 from python_API.common.ReadExcel import ReadExcel import req ...