log4j输出日志

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<!-- Appenders 日志信息输出目的地  -->
	<!-- ConsoleAppender -->
	<!-- 每个ConsoleAppender都有一个target,表示它的输出目的地。 -->
	<!-- 它可以是System.out,标准输出设备(缓冲显示屏) -->
	<!-- 或者是System.err,标准错误设备(不缓冲显示屏) -->
	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<param name="Target" value="System.out" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%l - %c:%m %d [%-5p]%n" />
		</layout>
	</appender>

	<!-- RollingFileAppender 回滚文件 -->
	<!-- Append true,默认每次启动系统,日志继续输出到原来的文件,而不是清空了再来 -->
	<!-- MaxFileSize 后缀可以是KB, MB 或者是 GB. 在日志文件到达该大小时,将会自动滚动,即将原来的内容移到mylog.log.1文件 -->
	<!-- MaxBackupIndex 最多20个 -->
	<!-- PatternLayout 控制日志输出的格式化,参考上面的那些符合说明,自己怼自己想要的格式。-->
	<!-- filter 级别范围过滤器 -->
	<!-- levelMin levelMax 范围  -->
	<appender name="StreamOperateFile" class="org.apache.log4j.RollingFileAppender">
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="%l - %c:%m %d [%-5p]%n" />
		</layout>
		<filter class="org.apache.log4j.varia.LevelRangeFilter">
			<param name="levelMin" value="INFO" />
			<param name="levelMax" value="INFO" />
			<param name="AcceptOnMatch" value="true" />
		</filter>
	</appender>

	<!-- 下面这些就是根据 这些路径来控制对应包下的文件的日志输出级别,基本上都是报错了,才输出日志  -->
	<logger name="org.springframework.core">
		<level value="error" />
	</logger>

	<logger name="org.springframework.beans">
		<level value="error" />
	</logger>

	<logger name="org.springframework.context">
		<level value="error" />
	</logger>

	<logger name="org.springframework.http">
		<level value="error" />
	</logger>

	<logger name="org.springframework.web">
		<level value="error" />
	</logger>

	<logger name="org.elasticsearch.client.transport">
		<level value="debug" />
	</logger>

	<logger name="org.springframework.data.mongodb">
		<level value="error" />
	</logger>

	<!-- logger 输出级别是info级别及以上的日志,下面的ref关联的两个appender没有filter设置,所以,info及以上的日志都是会输出到这2个appender的 -->
	<root>
		<priority value="info" />
		<appender-ref ref="console" />
	</root>

</log4j:configuration>


<!-- 
格式参数:
	-X号: X信息输出时左对齐;    
	%p: 输出日志信息优先级,即DEBUG,INFO,WARN,ERROR,FATAL,    
	%d: 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921    
	%r: 输出自应用启动到输出该log信息耗费的毫秒数    
	%c: 输出日志信息所属的类目,通常就是所在类的全名    
	%t: 输出产生该日志事件的线程名    
	%l: 输出日志事件的发生位置,相当于%C.%M(%F:%L)的组合,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main (TestLog4.java:10)    
	%x: 输出和当前线程相关联的NDC(嵌套诊断环境),尤其用到像java servlets这样的多客户多线程的应用中。    
	%%: 输出一个"%"字符    
	%F: 输出日志消息产生时所在的文件名称    
	%L: 输出代码中的行号    
	%m: 输出代码中指定的消息,产生的日志具体信息    
	%n: 输出一个回车换行符,Windows平台为"/r/n",Unix平台为"/n"输出日志信息换行    
	可以在%与模式字符之间加上修饰符来控制其最小宽度、最大宽度、和文本的对齐方式。如:    
	1)%20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,默认的情况下右对齐。    
	2)%-20c:指定输出category的名称,最小的宽度是20,如果category的名称小于20的话,"-"号指定左对齐。    
	3)%.30c:指定输出category的名称,最大的宽度是30,如果category的名称大于30的话,就会将左边多出的字符截掉,但小于30的话也不会有空格。    
	4)%20.30c:如果category的名称小于20就补空格,并且右对齐,如果其名称长于30字符,就从左边较远输出的字符截掉。  
-->

  

import java.text.SimpleDateFormat;
import java.util.Date;

import org.apache.log4j.FileAppender;
import org.apache.log4j.Level;
import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
import org.apache.log4j.xml.DOMConfigurator;
import org.slf4j.LoggerFactory;


public class Log4jTest {

//	private static org.slf4j.Logger logger  = LoggerFactory.getLogger(Log4jTest.class);
	private static SimpleDateFormat date = new SimpleDateFormat();
	public static void main(String[] args) {
		Logger logger = getLog(Log4jTest.class);
		logger.debug("This is debug message."); 
		// 记录info级别的信息 
		logger.info("This is info message."); 
		// 记录error级别的信息 
		logger.error("This is error message."); 
	}
	
	public static Logger getLog(Class<?> clazz) {  

		Logger logger = Logger.getLogger(clazz);  // 生成新的Logger  
		logger.removeAllAppenders(); // 清空Appender,特別是不想使用現存實例時一定要初期化  
		logger.setLevel(Level.DEBUG); // 设定Logger級別。  
		logger.setAdditivity(true); // 设定是否继承父Logger。默认为true,继承root输出;设定false后将不出书root。  
		FileAppender appender = new RollingFileAppender(); // 生成新的Appender  


		appender.setFile("D:/"+getTime("yyyy-MM-dd") + ".log");  // log输出路径  
		appender.setEncoding("UTF-8"); // log的字符编码  
		appender.setAppend(true);  //日志合并方式: true:在已存在log文件后面追加 false:新log覆盖以前的log  
		appender.activateOptions();  // 适用当前配置  

		PatternLayout layout = new PatternLayout();  
		layout.setConversionPattern("%l - %c:%m %d [%-5p]%n"); // log的输出形式  
		appender.setLayout(layout);  
		logger.addAppender(appender); // 将新的Appender加到Logger中  
		return logger;
	}

	private static String getTime(String format) {  
		SimpleDateFormat sdf = new SimpleDateFormat(format);  
		return sdf.format(new Date());  
	} 
}

  

转载于:https://www.cnblogs.com/SEVEN-wkq/p/6867269.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值