Log4j按级别输出日志到不同的文件

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
spring中对log的使用:
private static final Log logger = LogFactory.getLog(ContextLoader.class);
private static final String DEFAULT_STRATEGIES_PATH = "ContextLoader.properties";
private static final Properties defaultStrategies;
可见:static final中的大写只针对String类型,代表字符串常量,其他类型则一般不用大写。

写法1:方便继承:protected , 不用写类名: this .getClass().getName()

 
 
  1. protected Logger logger = LoggerFactory.getLogger(this.getClass().getName()); 
方法2:在构造函数中初始化
 
  1. protected static Logger logger; 
  2.     CaseToSourcePanamaMojo(){ 
  3.         logger = LoggerFactory.getLogger(getClass().getName()); 
  4.     } 
例子:无配置文件
 
  1. Logger logger = Logger.getLogger(Log4jSample.class); 
  2.         BasicConfigurator.configure(); 
  3.         logger.setLevel(Level.INFO); 
  4.          
  5.         logger.debug("debug msg."); 
  6.         logger.info("info msg."); 
  7.         logger.warn("warn msg."); 
  8.         logger.error("error msg."); 
  9.         logger.fatal("fatal msg."); 
 
 
Log4j按级别输出日志到不同的文件
 

 

 

 

 
<? xml  version ="1.0"  encoding ="UTF-8"  ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!-- #log4j中有5级logger ,#FATAL 0 ,#ERROR 3 ,#WARN 4 ,#INFO 6 ,#DEBUG 7 -->
< log4j:configuration  xmlns:log4j ='http://jakarta.apache.org/log4j/' >
<!-- 输出到控制台-->
<!--
<appender name="LOG.Console" class="org.apache.log4j.ConsoleAppender"> 
<layout class="org.apache.log4j.PatternLayout"> 
<param name="ConversionPattern" value="%d{yyy-MM-dd HH:mm:ss} [%-5p] %c {%F:%L} - %m%n" /> 
</layout> 
</appender>
-->
<!-- 将级别为DEBUG的信息输出到控制台-->
< appender  name ="LOG.DEBUG"  class ="org.apache.log4j.RollingFileAppender" >
< param  name ="File"  value ="debug.log"  />
< param  name ="MaxFileSize"  value ="5120KB"  />
< param  name ="MaxBackupIndex"  value ="10"  />
< layout  class ="org.apache.log4j.PatternLayout" >
< param  name ="ConversionPattern"  value ="%d{yyy-MM-dd HH:mm:ss} [%-5p] %c {%F:%L} - %m%n"  />
</ layout >
< filter  class ="org.apache.log4j.varia.LevelRangeFilter" > 
< param  name ="LevelMin"  value ="DEBUG"  /> 
< param  name ="LevelMax"  value ="DEBUG"  /> 
</ filter >
</ appender >
<!-- 将级别为INFO的信息输出到控制台-->
< appender  name ="LOG.INFO"  class ="org.apache.log4j.RollingFileAppender" >
< param  name ="File"  value ="info.log"  />
< param  name ="MaxFileSize"  value ="5120KB"  />
< param  name ="MaxBackupIndex"  value ="10"  />
< layout  class ="org.apache.log4j.PatternLayout" >
< param  name ="ConversionPattern"  value ="%d{yyy-MM-dd HH:mm:ss} [%-5p] %c {%F:%L} - %m%n"  />
</ layout >
< filter  class ="org.apache.log4j.varia.LevelRangeFilter" > 
< param  name ="LevelMin"  value ="INFO"  /> 
< param  name ="LevelMax"  value ="INFO"  /> 
</ filter >
</ appender >
<!-- 将级别为WARN的信息输出到控制台-->
< appender  name ="LOG.WARN"  class ="org.apache.log4j.RollingFileAppender" >
< param  name ="File"  value ="warn.log"  />
< param  name ="MaxFileSize"  value ="5120KB"  />
< param  name ="MaxBackupIndex"  value ="10"  />
< layout  class ="org.apache.log4j.PatternLayout" >
< param  name ="ConversionPattern"  value ="%d{yyy-MM-dd HH:mm:ss} [%-5p] %c {%F:%L} - %m%n"  />
</ layout >
< filter  class ="org.apache.log4j.varia.LevelRangeFilter" > 
< param  name ="LevelMin"  value ="WARN"  /> 
< param  name ="LevelMax"  value ="WARN"  /> 
</ filter >
</ appender >
<!-- 将级别为ERROR的信息输出到控制台-->
< appender  name ="LOG.ERROR"  class ="org.apache.log4j.RollingFileAppender" >
< param  name ="File"  value ="error.log"  />
< param  name ="MaxFileSize"  value ="5120KB"  />
< param  name ="MaxBackupIndex"  value ="10"  />
< layout  class ="org.apache.log4j.PatternLayout" >
< param  name ="ConversionPattern"  value ="%d{yyy-MM-dd HH:mm:ss} [%-5p] %c {%F:%L} - %m%n"  />
</ layout >
< filter  class ="org.apache.log4j.varia.LevelRangeFilter" > 
< param  name ="LevelMin"  value ="ERROR"  /> 
< param  name ="LevelMax"  value ="ERROR"  /> 
</ filter >
</ appender >
<!-- 将级别为FATAL的信息输出到控制台-->
< appender  name ="LOG.FATAL"  class ="org.apache.log4j.RollingFileAppender" >
< param  name ="File"  value ="fatal.log"  />
< param  name ="MaxFileSize"  value ="5120KB"  />
< param  name ="MaxBackupIndex"  value ="10"  />
< layout  class ="org.apache.log4j.PatternLayout" >
< param  name ="ConversionPattern"  value ="%d{yyy-MM-dd HH:mm:ss} [%-5p] %c {%F:%L} - %m%n"  />
</ layout >
< filter  class ="org.apache.log4j.varia.LevelRangeFilter" > 
< param  name ="LevelMin"  value ="FATAL"  /> 
< param  name ="LevelMax"  value ="FATAL"  /> 
</ filter >
</ appender >
<!--
<appender name="InitAction" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="d:/dbcon.log"/>
<param name="MaxFileSize" value="5120KB"/>
<param name="MaxFileSize" value="10" />
<param name="MaxBackupIndex" value="2" />
<param name="DatePattern" value="'.'yyyy-MM-dd'.'log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyy-MM-dd HH:mm:ss} - %m%n"/>
<param name="ConversionPattern" value="%d{DATE} [%-5p] %c {%F:%L} - %m%n"/>
</layout>
</appender>
-->
<!-- 设置org.logicalcobwebs包的输出级别为INFO-->
<!--
<category name="org.logicalcobwebs">
<priority value="INFO" />
<appender-ref ref="LOG.Console" />
</category>
-->
< root >
< priority  value ="DEBUG" />
<!--
<appender-ref ref="LOG.Console" />
-->
< appender-ref  ref ="LOG.DEBUG"  />
< appender-ref  ref ="LOG.INFO"  />
< appender-ref  ref ="LOG.WARN"  />
< appender-ref  ref ="LOG.ERROR"  />
< appender-ref  ref ="LOG.FATAL"  />
</ root >
</ log4j:configuration >
 
 
import junit.framework.Test;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
public class Simpandfile
{
static Logger logger = Logger.getLogger(Test.class);
public static void main(String args[])
{
// 以property方式读到配置文件。
//PropertyConfigurator.configure("simple.properties");
DOMConfigurator.configure("xmllog4jconfig.xml");
logger.debug("Here is some DEBUG");
logger.info("Here is some INFO");
logger.warn("Here is some WARN");
logger.error("Here is some ERROR");
logger.fatal("Here is some FATAL");
}
}

=============================================================================

1、输出类的相对路径,而不是全部长度

<param name="ConversionPattern" value="%d [%X{requestURIWithQueryString}] %-5p %c{2} - %m%n" />

2、ibatis输出sql

 
    
  1. log4j.rootLogger=debug,stdout 
  2. log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
  3. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
  4. log4j.appender.stdout.layout.conversionPattern=[%5p] %d{mm:ss}/(%F:%M:%L)%n%m%n%n 
  5. log4j.logger.com.ibatis=debug 
  6. log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug 
  7. log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug 
  8. log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug 
  9. log4j.logger.java.sql.Connection=debug 
  10. log4j.logger.java.sql.Statement=debug 
  11. log4j.logger.java.sql.PreparedStatement=debug,stdout 

 

 

 

 
 
 

 


本文转自 tianya23 51CTO博客,原文链接:http://blog.51cto.com/tianya23/588309,如需转载请自行联系原作者

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
2月前
|
存储 监控 算法
防止员工泄密软件中文件访问日志管理的 Go 语言 B + 树算法
B+树凭借高效范围查询与稳定插入删除性能,为防止员工泄密软件提供高响应、可追溯的日志管理方案,显著提升海量文件操作日志的存储与检索效率。
99 2
|
7月前
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
817 54
|
10月前
|
存储 SQL 关系型数据库
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log、原理、写入过程;binlog与redolog区别、update语句的执行流程、两阶段提交、主从复制、三种日志的使用场景;查询日志、慢查询日志、错误日志等其他几类日志
804 35
MySQL日志详解——日志分类、二进制日志bin log、回滚日志undo log、重做日志redo log
|
10月前
|
存储 缓存 关系型数据库
图解MySQL【日志】——Redo Log
Redo Log(重做日志)是数据库中用于记录数据页修改的物理日志,确保事务的持久性和一致性。其主要作用包括崩溃恢复、提高性能和保证事务一致性。Redo Log 通过先写日志的方式,在内存中缓存修改操作,并在适当时候刷入磁盘,减少随机写入带来的性能损耗。WAL(Write-Ahead Logging)技术的核心思想是先将修改操作记录到日志文件中,再择机写入磁盘,从而实现高效且安全的数据持久化。Redo Log 的持久化过程涉及 Redo Log Buffer 和不同刷盘时机的控制参数(如 `innodb_flush_log_at_trx_commit`),以平衡性能与数据安全性。
464 5
图解MySQL【日志】——Redo Log
|
9月前
|
监控 Java 应用服务中间件
Tomcat log日志解析
理解和解析Tomcat日志文件对于诊断和解决Web应用中的问题至关重要。通过分析 `catalina.out`、`localhost.log`、`localhost_access_log.*.txt`、`manager.log`和 `host-manager.log`等日志文件,可以快速定位和解决问题,确保Tomcat服务器的稳定运行。掌握这些日志解析技巧,可以显著提高运维和开发效率。
884 13
|
9月前
|
缓存 Java 编译器
|
10月前
|
运维 应用服务中间件 nginx
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
1310 28
|
9月前
|
SQL 存储 关系型数据库
简单聊聊MySQL的三大日志(Redo Log、Binlog和Undo Log)各有什么区别
在MySQL数据库管理中,理解Redo Log(重做日志)、Binlog(二进制日志)和Undo Log(回滚日志)至关重要。Redo Log确保数据持久性和崩溃恢复;Binlog用于主从复制和数据恢复,记录逻辑操作;Undo Log支持事务的原子性和隔离性,实现回滚与MVCC。三者协同工作,保障事务ACID特性。文章还详细解析了日志写入流程及可能的异常情况,帮助深入理解数据库日志机制。
1095 0
|
10月前
|
存储 关系型数据库 MySQL
图解MySQL【日志】——Undo Log
Undo Log(回滚日志)是 MySQL 中用于实现事务原子性和一致性的关键机制。在默认的自动提交模式下,MySQL 隐式开启事务,每条增删改语句都会记录到 Undo Log 中。其主要作用包括:
336 0