sssm中使用log4j做异常日志处理
jar包
<!-- LOGGING begin -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- common-logging 实际调用slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
<!-- java.util.logging 实际调用slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
配置文件
log4j.rootLogger=info,stdout,D,I,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 = %d{ABSOLUTE} %5p %c{ 1 }:%L - %m%n
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#ERROR > WARN > INFO > DEBUG
### DEBUG 级别的日志 ###
# 每天产生一个日志文件
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
# 路径 在Tomcat根路径下 如下D:\softword\apache-tomcat-8.5.42\logs\turtle_admin_error.log
log4j.appender.D.File=../logs/debug.log
log4j.appender.D.Encoding=utf-8
log4j.appender.D.Append=true
#输出级别
# DEBUG 及以上
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
### INFO 级别的日志 ###
log4j.appender.I=org.apache.log4j.DailyRollingFileAppender
log4j.appender.I.File=../logs/info.log
log4j.appender.I.Encoding=utf-8
log4j.appender.I.Append=true
log4j.appender.I.Threshold=INFO
log4j.appender.I.layout=org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### ERROR 级别的日志 ###
log4j.appender.E=org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File=../logs/error.log
log4j.appender.E.Encoding=utf-8
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
log4j.rootLogge 语法 :
log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
appenderName:就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
例如:log4j.rootLogger=info,A1,B2,C3 配置了3个输出地方,这个名字可以任意(如上面的db),但必须与我们在后面进行的设置名字对应;
————————————————
版权声明:本文为CSDN博主「粟西米」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_36345181/article/details/78107606
我的配置文件是把 debug,info,error分别存放到不同的日志中,stdout则输出到控制台
使用
//导入jar
import org.apache.log4j.Logger;
private final static Logger logger = Logger.getLogger(MD5Utils.class);
在try异常里面或需要的地方使用如
try{
//异常代码
}catch (Exception e){
// error级别的日志
logger.error(e.fillInStackTrace());
e.printStackTrace();
}
//直接使用
logger.error("这里有异常");
logger.debug("业务处理完毕");
logger.info( name + "删除了信息");
参考:
我们经常这样创建日志实例,那么为什么要用static还有final呢??
网上搜集了一些简单的答案:
定义成static final,logger变量不可变,读取速度快
static 修饰的变量是不管创建了new了多少个实例,也只创建一次,节省空间,如果每次都创建Logger的话比较浪费内存;final修饰表示不可更改,常量
将域定义为static,每个类中只有一个这样的域.而每一个对象对于所有的实例域却都有自己的一份拷贝.,用static修饰既节约空间,效率也好。final 是本 logger 不能再指向其他 Logger 对象
————————————————
版权声明:本文为CSDN博主「HE-Tongkun」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hetongun/article/details/82317215
log日志级别 :
log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。
https://blog.csdn.net/qq_30764991/article/details/80642502