使用log4j需要
1.log4j-1.2.17.jar 就这一个,没错!你没看错!!!!
2.默认放在classpath下(java项目src下,maven项目resource下)
也可以用PropertyConfigurator.configure();里面的路径是项目根目录,src就是在项目根目录configure("src/log4j.properties")就相当于默认
3.(1)使用properties或xml进行配置
(2)如果需要单个java文件单独日志
java包里导入
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;所在的包
Logger logger = Logger.getLogger(test.class.getName());
logger.info("test3.info")
这个跟system.out.print的用法差不多,字符串拼接
if (logger.isDebugEnabled()) {
logger.debug("Processing trade with id: " + id + " symbol: " + symbol);
}
使用slf4j需要
slf4j-api-1.7.26.jar:导入import org.slf4j.Logger;import org.slf4j.LoggerFactory;所在的包
slf4j-log4j12-1.7.26.jar slf4j和log4j整合需要的包
log4j-1.2.17.jar slf4j基于log4j,没有不行
使用slf4j日志的类中只要导入上述两个包即可
特定类指定log输出,在类中使用
Logger logger = LoggerFactory.getLogger(类名.class);
logger.info("Stringbuffer:{}",pageCode.toString());
pageCode.toString()会代替{}
这个跟c语言的printf %s类似,不同的是{}不仅可以填入字符串类型的,其他类型也可以
logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
上代码:
使用slf4j日志的java文件
package Stringbuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
//import org.apache.log4j.Logger;
//import org.apache.log4j.PropertyConfigurator;
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Logger logger = LoggerFactory.getLogger(test.class);
//PropertyConfigurator.configure("F:/Users/27819/workspace/blogTest/src/log4j.properties");
//Logger logger = Logger.getLogger(test.class.getName());
StringBuffer pageCode = new StringBuffer();
//"\r\n" Stringbuffer换行
pageCode.append("<li><a href='" + "targetUrl" + "?page=1&" + "param" + "'>首页</a></li>\r\n");
pageCode.append("<li><a href='" + "targetUrl" + "?page=" + "(currentPage-1) "+ "&" + "param" + "'>上一页</a></li>\r\n");
pageCode.append("<li class='disabled'><a>首页</a></li>\r\n");
pageCode.append("<li class='disabled'><a>上一页</a></li>\r\n");
logger.info("Stringbuffer:{}",pageCode.toString());
//logger.debug();
}
}
关于 properties配置文件该如何配置,slf4j和log4j配置方式相同,详情自搜
下面是一个使用上述slf4j进行特定java文件输出日志到特定日志文件的配置,
#该配置实现了一个存放项目所有debug权限以上的log文件
# 一个存放项目所有error权限以上的log文件
# 一个存放特定java文件debug权限以上的log文件
# 一控制台输出所有debug权限以上的操作
#rootlogger之后第一个属性是级别,但也可以把debug换成a,b,c,不配置级别,
#如果第一个是自定义的appenderName(System,error,all都是appenderName,不是关键字)默认不识别,
log4j.rootLogger=debug,System,error,all
#Stringbuffer.test 为包名.类名 INFO为显示的日志等级 有FATAL、ERROR、WARN、INFO、DEBUG四个等级
#这个不论在all,system还是自己专有的log文件中都没有info之下(debug)日志输出,直接在类截断
log4j.logger.Stringbuffer.test=INFO,Test
#输出到控制台,ConsoleAppender表示输出到控制台
log4j.appender.System=org.apache.log4j.ConsoleAppender
log4j.appender.System.Target = System.out
#使用自定义日志格式化器
log4j.appender.System.layout=org.apache.log4j.PatternLayout
#指定日志的输出格式
log4j.appender.System.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS} [%t] %l %-5p - %m%n
#输出error.log文件中,这个文件存储项目所有的error以上的信息FATAL、ERROR
log4j.appender.error=org.apache.log4j.RollingFileAppender
log4j.appender.error.File=E:/log4jlog/log/error.log
log4j.appender.error.MaxFileSize=100MB
log4j.appender.error.MaxBackupIndex=30
log4j.appender.error.Append = true
#设置log文件存储的级别
log4j.appender.error.threshold = error
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS} [%t] %c %-5p - %m%n
#输出all.log文件中,这个文件存储项目所有的debug以上的信息FATAL、ERROR、WARN、INFO、DEBUG、
log4j.appender.all=org.apache.log4j.RollingFileAppender
log4j.appender.all.File=E:/log4jlog/log/all.log
log4j.appender.all.MaxFileSize=100MB
log4j.appender.all.MaxBackupIndex=30
log4j.appender.all.Append = true
#设置log文件存储的级别
log4j.appender.all.threshold = debug
log4j.appender.all.layout=org.apache.log4j.PatternLayout
log4j.appender.all.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS} [%t] %c %-5p - %m%n
#输出Test4.log 文件中,这个文件只存储Test.java的debug信息
log4j.appender.Test=org.apache.log4j.RollingFileAppender
log4j.appender.Test.File=E:/log4jlog/log/Test4.log
log4j.appender.Test.MaxFileSize=100MB
log4j.appender.Test.MaxBackupIndex=30
log4j.appender.Test.Append = truelog4j.appender.Test.threshold = debug
log4j.appender.Test.layout=org.apache.log4j.PatternLayout
log4j.appender.Test.layout.ConversionPattern=%d{MM-dd HH:mm:ss.SSS} [%t] %c %-5p - %m%n
level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
appenderName:就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
例如:log4j.rootLogger=info,A1,B2,C3 配置了3个输出地方,这个名字可以任意(如上面的db),但必须与我们在后面进行的设置名字对应;