SSM框架下的Log4j配置示例:直接打印日志到控制台与文件

需积分: 10 0 下载量 103 浏览量 更新于2024-09-05 收藏 909B TXT 举报
在IT项目开发中,日志管理是不可或缺的一部分,尤其是对于使用Spring框架(SSM)构建的应用程序。在这个上下文中,log4j是一个常用的日志记录工具,它提供了灵活且强大的日志配置能力。本文档提供了详细的log4j配置文件,用于设置系统的日志行为。 首先,我们来看一下配置文件的结构和各个部分的含义: 1. `log4j.rootLogger`: 这行定义了应用程序的主日志级别,这里设置为`DEBUG`,意味着所有级别的日志都会被记录,包括DEBUG、INFO、WARN、ERROR和FATAL。`Console,File`表示日志将被同时输出到控制台和文件中。 2. `log4j.appender.Console`: 这部分配置了一个名为`Console`的日志appender,用于将日志消息输出到控制台。`Target=System.out`指定输出目标为标准输出,即控制台。`PatternLayout`指定了布局模式, `%5p`用于显示日志级别(如DEBUG、INFO等),`%d`表示日期时间,`%C`是类名,`%m`是消息,`%n`换行符。 3. `log4j.appender.File`: 一个名为`File`的日志appender,用于将日志写入文件。`E:/logs/SSMDemo.log`是日志文件的路径,`Encoding=UTF-8`确保了文件编码以便于处理各种字符集。`DailyRollingFileAppender`会每日创建一个新的日志文件,`Threshold=ALL`意味着所有级别的日志都会被写入文件。 4. `log4j.appender.File.layout`: 对`File` appender的布局进行了进一步定制,`ConversionPattern`与控制台略有不同,包含了日期时间的完整格式以及类名、行号(`%L`)和消息。 5. `log4j.logger.*`: 这些行用于为特定包或类设置单独的日志级别。例如,`log4j.logger.com.opensymphony=ERROR`意味着`com.opensymphony`包下的所有类的日志仅记录错误级别及以上,`org.springframework=ERROR`则将Spring框架的类日志限制在错误级别。 6. 最后,`java.sql.Connection`、`PreparedStatement`、`ResultSet`和`Statement`的日志级别被设置为INFO,这有助于监控数据库操作,但不会淹没其他重要的日志信息。 通过这个log4j配置文件,开发者可以根据需要调整日志输出的详细程度和目的地,使得调试和问题排查更加高效。理解并适当地配置log4j对于维护和优化大型应用至关重要。在实际项目中,根据项目需求和性能考虑,可能还需要调整日志级别、文件大小限制等参数。

2023-07-07 20:11:52,076 INFO [upload-pool-40] c.e.d.j.DataUnitService.DataUnitService#uploadFileToHdfs[DataUnitService.java:98] 本次文件上传HDFS用时:18s 2023-07-07 20:11:52,077 INFO [upload-pool-40] c.e.d.j.DataUnitService.DataUnitService#uploadFileToHdfs[DataUnitService.java:98] 本次文件上传HDFS用时:0s 2023-07-07 20:11:52,514 INFO [upload-pool-35] c.e.d.j.DataUnitService.DataUnitService#tohiveWy[DataUnitService.java:172] /u01/tarsftp//2023070719575912003640001.txt.gz解压>>>>>>/u01/untarsftp/ 2023-07-07 20:11:52,520 WARN [Thread-4655232] o.a.h.h.DFSClient.DFSOutputStream$DataStreamer#run[DFSOutputStream.java:558] DataStreamer Exception org.apache.hadoop.ipc.RemoteException: File /dataunit/cu_access_log/10/2023070719575912003640001.txt could only be written to 0 of the 1 minReplication nodes. There are 11 datanode(s) running and no node(s) are excluded in this o peration. at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:2121) at org.apache.hadoop.hdfs.server.namenode.FSDirWriteFileOp.chooseTargetForNewBlock(FSDirWriteFileOp.java:286) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2706) at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:875) at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:561) at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:524) at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1025) at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:876) at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:822) at java.security.AccessController.doPrivileged(Native Method) at javax.securi

2023-07-13 上传