b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Log4j自定义级别并将分类输出到文件

电脑杂谈  发布时间:2020-07-01 01:20:15  来源:网络整理

日志分类学生_日志分类怎么删除分类_日志创建分类

背景介绍: 记录服务中每个方法的记录,记录方法执行时间和方法名称,方法用法日志分类学生,返回结果等. 日志记录工具使用log4j并自定义级别,然后将输出分类为文件

首先,自定义log4j级别:

日志分类怎么删除分类_日志分类学生_日志创建分类

public class ServiceLog {
	 private static Logger logger = Logger.getLogger(ServiceLog.class);  
	    // 定义级别
	    private static class ServiceLogLevel extends Level {  
	  
		private static final long serialVersionUID = 1L;
		private ServiceLogLevel(int level, String name, int sysLogLevel) {  
	        	super(level, name, sysLogLevel);  
	        }  
	    }  
	    // 20050级别数,"SERVICELOG":级别名称
	    private static final Level SERVICE_LOG_LEVEL = new ServiceLogLevel(20050, "SERVICELOG",  
	            SyslogAppender.LOG_LOCAL0);  
	    // 使用时调用方法
	    public static void serviceLogger(Object pm_objLogInfo) {  
	        logger.log(SERVICE_LOG_LEVEL, pm_objLogInfo);  
	    }  
}

定义过滤器:

日志分类怎么删除分类_日志创建分类_日志分类学生

public class ServiceLogFilter extends Filter {
	boolean acceptOnMatch = false;
	private String levelMin;
	private String levelMax;
	public String getLevelMin() {
		return levelMin;
	}
	public void setLevelMin(String levelMin) {
		this.levelMin = levelMin;
	}
	public String getLevelMax() {
		return levelMax;
	}
	public void setLevelMax(String levelMax) {
		this.levelMax = levelMax;
	}
	public boolean isAcceptOnMatch() {
		return acceptOnMatch;
	}
	public void setAcceptOnMatch(boolean acceptOnMatch) {
		this.acceptOnMatch = acceptOnMatch;
	}
	@Override
	public int decide(LoggingEvent lgEvent) {
		int inputLevel = lgEvent.getLevel().toInt();
		if (inputLevel >= getLevel(levelMin)
				&& inputLevel <= getLevel(levelMax)) {
			return 0;
		}
		return -1;
	}
	private int getLevel(String level) {
		level = level.toUpperCase();
		if (level.equals("SERVICELOG")) {
			return LevelType.SERVICELOG.getType();
		}
		if (level.equals("OFF")) {
			return LevelType.OFF.getType();
		}
		if (level.equals("FATAL")) {
			return LevelType.FATAL.getType();
		}
		if (level.equals("ERROR")) {
			return LevelType.ERROR.getType();
		}
		if (level.equals("INFO")) {
			return LevelType.INFO.getType();
		}
		if (level.equals("WARN")) {
			return LevelType.WARN.getType();
		}
		if (level.equals("DEBUG")) {
			return LevelType.DEBUG.getType();
		}
		if (level.equals("ALL")) {
			return LevelType.ALL.getType();
		}
		return LevelType.OFF.getType();
	}
	private static enum LevelType {
		OFF(2147483647),
		FATAL(50000),
		ERROR(40000),
		WARN(30000),
		INFO(20000),
		DEBUG(10000),
		ALL(-2147483648),
		SERVICELOG(20050);
		int type;
		public int getType() {
			return type;
		}
		private LevelType(int type) {
			this.type = type;
		}
	}
}

配置文件log4j.xml

日志创建分类_日志分类学生_日志分类怎么删除分类

<?xml version="1.0" encoding="UTF-8" ?>    
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">    
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">      
    <!-- 输出日志到控制台  ConsoleAppender -->   
     <appender name="stdout" class="org.apache.log4j.ConsoleAppender">  
        <param name="Threshold" value="DEBUG"></param>  
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss} -%t] %c:%L%n%m%n"></param>  
        </layout>  
    </appender>  
  
    <!-- 记录info信息  每天一个文件 -->  
    <appender name="info"  class="org.apache.log4j.DailyRollingFileAppender">  
        <param name="DatePattern" value="'_'yyyy-MM-dd'.log'"></param>  
        <param name="File" value="D:/Servers/logs/log_info"></param>  
        <param name="Encoding" value="UTF-8"></param> 
        <param name="Append" value="true"></param> 
        <param name="Threshold" value="INFO"></param> 
        
        <filter class="com.cisdi.tool.serviceLog.ServiceLogFilter">     
		  <param name="LevelMin" value="INFO" />     
		  <param name="LevelMax" value="INFO" />     
		</filter> 
		
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss} -%t] %c:%L%n%m%n"></param>  
        </layout>  
    </appender>   
    
    <!-- 记录错误信息  文件大小到达指定尺寸的时候产生一个新的文件 -->  
    <appender name="error"  class="org.apache.log4j.DailyRollingFileAppender">  
        <param name="File" value="D:/Servers/logs/log_error"></param>  
        <param name="DatePattern" value="'_'yyyy-MM-dd'.log'"/>  
        <param name="Append" value="true"></param>  
        <param name="Threshold" value="ERROR"></param>  
        <param name="MaxFileSize" value="2000KB"></param>  
        <param name="Encoding" value="UTF-8"></param>  
         <filter class="com.cisdi.tool.serviceLog.ServiceLogFilter">     
		  <param name="LevelMin" value="Error" />     
		  <param name="LevelMax" value="Error" />     
		</filter> 
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="[%p][%d{yyyy-MM-dd HH:mm:ss} -%t] %c:%L%n%m%n"></param>  
        </layout>  
    </appender>  
  
    <!-- 自定义日志,用来记录service操作记录 -->  
    <appender name="serviceLog"  class="org.apache.log4j.DailyRollingFileAppender">  
        <param name="File" value="D:/Servers/logs/serviceLog"></param>  
        <param name="DatePattern" value="'_'yyyy-MM-dd"></param>  
        <param name="Encoding" value="UTF-8"></param>  
        <param name="Append" value="true"></param>  
        <param name="Threshold" value="SERVICELOG"></param>  
         <filter class="com.cisdi.tool.serviceLog.ServiceLogFilter">     
		  <param name="LevelMin" value="SERVICELOG" />     
		  <param name="LevelMax" value="SERVICELOG" />     
		</filter> 
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %m%n%n"></param>  
        </layout>  
    </appender>  
  
  
    <!--   
        定义全局的日志输出级别,但是在输出目的地的配置中配置的具体输出级别优先级高于全局定义的优先级。  
        如果在railyFile中定义<param name="Threshold" value="info"></param>,那么将会把info以上级别的信息输出  
     -->  
    <root>       
        <priority value="info" />       
        <appender-ref ref="stdout" />    
        <appender-ref ref="info" />    
        <appender-ref ref="error" />    
        <appender-ref ref="serviceLog" />    
    </root>         
  
</log4j:configuration>   

需要在web.xml中配置和使用配置文件(由于作者使用了Java Web项目)

日志创建分类_日志分类学生_日志分类怎么删除分类

<!-- log4j 系统日志-->  
  
  	<context-param>   
	    <param-name>log4jConfigLocation</param-name>   
	    <param-value>classpath:config/log4j.xml</param-value>   
	</context-param>   
	<listener>   
	    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>   
	</listener>  

有关自定义日志级别的特定用法日志分类学生,请参阅另一篇文章“ AOP实现方法的日志记录”


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-264194-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 赵士穀
        赵士穀

        事物的本质要用心灵才能看见

      • 陈万里
        陈万里

        呵呵土豪来炫富了

      • 韩博
        韩博

        中国食品生产赃乱差

      热点图片
      拼命载入中...