十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
日志打印是了解Web项目运行的最直接方式,所以在项目开发中是需要首先搭建好的环境。
大祥网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站开发等网站项目制作,到程序开发,运营维护。创新互联从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
1、Log4j2特点
1)核心特点
相比与其他的日志系统,log4j2丢数据这种情况少;disruptor技术,在多线程环境下,性能高;并发的特性,减少了死锁的发生。
2)性能测试
2、日志打印之外观模式
每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,增加应用程序代码和日志框架的耦合性。
《阿里巴巴Java开发手册》,其中有一条规范做了『强制』要求:
SLF4J日志API
Java简易日志门面(Simple Logging Facade for Java,缩写SLF4J),是一套包装Logging 框架的界面程式,使用外观模式实现。
1、项目结构
2、不同环境的日志配置
使用最直接的方式,不同环境加载不同的日志配置。
1)开发环境配置
2)生产环境配置
3、Log4j2的配置文件
1、简单的测试程序
2、测试效果图
四、源代码地址
可以使用log4j。使用方法如下供参考:
导入jar包
配置log4j.properties文件
创建工具类(接口)
public interface LoggerUtil {
// 得到Logger,用于打印日志
Logger logger = Logger.getLogger(LoggerUtil.class);
}
4、使用(核心代码介绍)
@RequestMapping("/delete.do")
public String delete(Students students) {
try {
stuService.delete(students);
} catch (Exception e) {
// 使用日志
LoggerUtil.logger.error(e.getMessage());
}
return "redirect:selectAll.do";
}
public void foo(){
log("进入...");
try{
if(条件1) return;
if(条件2) return;
if(条件3) return;
}finally{
log("退出...");
}
}
使用debug, info, warn, error四个级别,debug为打印调试信息,例如接口参数值,返回结果等,info用来打印有用的信息通知,warn用在发生了某些问题,但并无严重影响(例如影响业务逻辑的实现)的,error用于严重错误,业务逻辑执行失败。
提交的代码中必须使用log来代替System.out.print(ln)和e.printStackTrace()语句,这两种只能在进行出错时特殊化的临时打印。
当出现异常后,使用log打印时,必须使用logger.xxx("message", e)的形式输出。
在所有异常被捕获但没有被重新抛出的地方都必须写日志。
在你的src目录下:放入log4j.xml文件
文件内容如下:
[html] view plain copy
?xml version="1.0" encoding="UTF-8"?
Configuration status="WARN"
properties
property name="logPath"log/property
/properties
Appenders
Console name="Console" target="SYSTEM_OUT"
PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /
!-- PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" / --
!-- PatternLayout pattern="%-d [%t] %-5p %c{1}:%L - %m%n" / --
/Console
!-- File name="LogFile" filename="${sys:catalina.home}/logs/automation.log"
PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /
/File --
RollingFile name="RollingFile" filename="${logPath}/automation.log"
filepattern="${logPath}/%d{YYYYMMddHHmmss}-automation.log"
PatternLayout pattern="%d{YYYY-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /
Policies
SizeBasedTriggeringPolicy size="100 MB"/
/Policies
DefaultRolloverStrategy max="20"/
/RollingFile
/Appenders
Loggers
Root level="info"
AppenderRef ref="Console" /
!-- AppenderRef ref="LogFile" / --
AppenderRef ref="RollingFile" /
/Root
/Loggers
/Configuration