项目的日志输出

1.关于日志在项目中的logback.xml配置

配置文件内容
<?xml version="1.0" encoding="UTF-8"?>
<configuration><!--日志配置--><property name="PROJECT_NAME" value="order-finance-error"/><property name="LOG_BASE" value="/home/product/logs"/><property name="LOG_BACK_DIR" value="${LOG_BASE}/${PROJECT_NAME}_logs"/><!-- 监控日志 START--><property name="MONITORLOG_DIR" value="/home/product/logs/fsof_monitor/" /><appender name="MONITOR_APPENDER"class="ch.qos.logback.core.rolling.RollingFileAppender"><File>${MONITORLOG_DIR}/provider_service.log</File><prudent>true</prudent><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><fileNamePattern>${MONITORLOG_DIR}/provider_service.%d{yyyy-MM-dd}.log</fileNamePattern><maxHistory>30</maxHistory></rollingPolicy><encoder><Pattern>%m%n</Pattern><charset>UTF-8</charset></encoder></appender><logger name="MONITOR_LOG" level="INFO" additivity="false"><appender-ref ref="MONITOR_APPENDER" /></logger><!-- 监控日志 END--><!-- logback 工程的日志配置--><appender name="INFO_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_BACK_DIR}/info.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --><fileNamePattern>${LOG_BACK_DIR}/info_%d{yyyyMMddHH}.log</fileNamePattern><maxHistory>48</maxHistory><!-- 保存最大文件数 2天的日志--></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%X{threadId}|%X{traceId}-%X{rpcId}|%level|%C|%M|%L|uid=%X{uid},deviceId=%X{deviceId},sessionId=%X{sessionId},requestId=%X{requestId},tradeId=%X{tradeId},clientIp=%X{clientIp}|%.-512msg|%X{callChain}%n</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><!-- 只打印错误日志 --><level>INFO</level></filter></appender><appender name="ERROR_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_BACK_DIR}/error.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --><fileNamePattern>${LOG_BACK_DIR}/error_%d{yyyyMMdd}.log</fileNamePattern><maxHistory>7</maxHistory><!-- 保存最大文件数--></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%X{threadId}|%X{traceId}-%X{rpcId}|%level|%C|%M|%L|uid=%X{uid},deviceId=%X{deviceId},sessionId=%X{sessionId},requestId=%X{requestId},tradeId=%X{tradeId},clientIp=%X{clientIp}|%.-512msg|%X{callChain}%n</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><!-- 只打印错误日志 --><level>WARN</level></filter></appender><appender name="DEBUG_ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_BACK_DIR}/debug.log</file><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!-- rollover daily --><fileNamePattern>${LOG_BACK_DIR}/debug_%d{yyyyMMddHH}.log</fileNamePattern><maxHistory>48</maxHistory><!-- 保存最大文件数--></rollingPolicy><encoder><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%X{threadId}|%X{traceId}-%X{rpcId}|%level|%C|%M|%L|uid=%X{uid},deviceId=%X{deviceId},sessionId=%X{sessionId},requestId=%X{requestId},tradeId=%X{tradeId},clientIp=%X{clientIp}|%.-512msg|%X{callChain}%n</pattern><charset>UTF-8</charset></encoder><filter class="ch.qos.logback.classic.filter.ThresholdFilter"><!-- 只打印错误日志 --><level>TRACE</level></filter></appender><!-- logback 工程的日志配置 END--><!-- logback 工程的日志配置 END--><!-- 开发环境使用 打印在控制台--><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><layout class="ch.qos.logback.classic.PatternLayout"><param name="Pattern"value="%d{yyyy-MM-dd HH:mm:ss.SSS}|%X{threadId}|%X{traceId}-%X{rpcId}|%level|%C|%M|%L|uid=%X{uid},deviceId=%X{deviceId},sessionId=%X{sessionId},requestId=%X{requestId},tradeId=%X{tradeId},clientIp=%X{clientIp}|%.-512msg|%X{callChain}%n"/></layout></appender><logger name="org.springframework" level="WARN" /><logger name="java.sql.Connection" level="INFO" /><logger name="java.sql.ResultSet" level="INFO" /><logger name="org.apache.zookeeper.ClientCnxn" level="WARN"/><logger name="org.mybatis.spring.SqlSessionUtils" level="WARN" /><!--开发环境为DEBUG等级--><root level="INFO"><appender-ref ref="INFO_ROLLING"/><appender-ref ref="DEBUG_ROLLING"/><appender-ref ref="ERROR_ROLLING"/><appender-ref ref="STDOUT"/></root>
</configuration>

2.日志的名词解释用法
1.主题标签

     "<"configuration">"

2.控制台输出的标签:

"<“Console name= “Console” target=“SYSTEM_OUT”>”

这个标签估计都能猜到是用于控制台日志打印的;其中:
name属性随意取,是给标签用的。 target属性是输出,我只知道这个值。

3.文件输出标签

"<"File name=“log” fileName=“log/test.log” append=“false”>

filePattern属性是用来声明每个存档文件的名字。
4. 日志集标签:

>  <loggers>

子标签

  <root level="trace"><appender-ref ref="RollingFile"/><ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/><PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/><SizeBasedTriggeringPolicy size="2MB"/>

level等级:

Log4J Levels TRACE Level DEBUG Level INFO Level WARN Level ERROR Level FATAL Level
TRACE Level Y Y Y Y Y Y
DEBUG Level N Y Y Y Y Y
INFO Level N N Y Y Y Y
WARN Level N N N Y Y Y
ERROR Level N N N N Y Y
FATAL Level N N N N N Y
ALL Level Y Y Y Y Y Y
OFF Level N N N N N N

5.语义符
1.%c 输出日志信息所属的类的全名
2.%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-M-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
3.%f 输出日志信息所属的类的类名
4.%l 输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行
5.%m 输出代码中指定的信息,如log(message)中的message
6.%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”
7.%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
8.%r 输出自应用启动到输出该日志信息所耗费的毫秒数
9.%t 输出产生该日志事件的线程名

3.如何打印日志输出

1)日志输出级别的判断
对DEBUG、INFO级别的日志,必须使用条件输出或者使用占位符的方式打印
举个反例:

  >  log.debug("输入参数信息id=" + id + ",obj=" + obj);

正确示例:

//使用条件判断形式
if (log.isDebugEnabled()) {
log.debug(“输入参数信息id={}”, id);
}
//使用占位符形式
log.debug(“输入参数信息id={},obj={}”, id, obj);

2)区别对待错误日志
WARN、ERROR都是与错误有关的日志级别,但不要一发生错误就打印ERROR日志,比如一些业务异常是可以通过引导重试就能恢复的,例如用户输入参数错误,在这种情况下,记录日志是为了在用户咨询时可以还原现场如果输出为ERROR级别就表示一旦出现就需要人为介入,这显然不合理。所以,ERROR级别只记录系统逻辑错误、异常或者违反重要的业务规则,其他错误都可以归为WARN级别。

3)输出完整内容
日志记录内容包括上下文内容和异常堆栈信息,所以需要:
1.日志异常时一定要输出异常堆栈,例如:

log.error(“xxx” + e.getMessage(), e);

2.日志中如果需要输出对象实例,要确保实例类重写了toString方法,否则只会打印对象的hashCode值,没有意义

java项目日志打印总结相关推荐

  1. java项目统一打印入参出参等日志

    java项目统一打印入参出参等日志 1.背景 2.设计思路 3.核心代码 3.1 自定义注解 3.2 实现BeanFactoryPostProcessor接口 3.3 实现MethodIntercep ...

  2. Java之日志打印占位符

    在java中日志打印基本方式有System.out.print()打印,在工程应用中更多的是使用LogFactory,getLogger()打印,下面对其打印时使用占位符的用法进行简单分析. 1.Sy ...

  3. 在Java项目中打印错误日志的正确姿势,排查问题更方便,非常实用!

    作者:琴水玉 cnblogs.com/lovesqcc/p/4319594.html 在程序中打错误日志的主要目标是为更好地排查问题和解决问题提供重要线索和指导.但是在实际中打的错误日志内容和格式变化 ...

  4. java项目日志文件过大解决_Tomcat catalina.out文件过大的解决方案

    JAVA项目经常会让磁盘爆满,对系统的稳定造成了一定的影响.可能就是你的配置与项目设置问题! 按照别人的说法: System.out 和 System.err 都被打印到 catalina.out. ...

  5. java 日志颜色_【Java】+日志打印+日志颜色设置

    先看个效果 一.log4j日志打印配置 1.1.maven依赖 log4j log4j 1.2.17 1.2.新建log4j.properties文件 项目src目录下新建一个文件 "log ...

  6. java程序日志打印规范

    java日志打印规范 一.日志 API 二.日志输出 三.日志配置 V1.0.0_NEW 四.日志性能 五.栈信息打印 一.日志 API 1.[强制]各应用中不可直接使用日志系统(Log4j.Logb ...

  7. error 系统错误 错误码10007_在Java项目中打印错误日志的正确姿势,排查问题更方便,非常实用!...

    作者:琴水玉 cnblogs.com/lovesqcc/p/4319594.html 在程序中打错误日志的主要目标是为更好地排查问题和解决问题提供重要线索和指导. 但是在实际中打的错误日志内容和格式变 ...

  8. 在 Java 项目中打印错误日志的正确姿势,排查问题更方便,非常实用!

    在程序中打错误日志的主要目标是为更好地排查问题和解决问题提供重要线索和指导.但是在实际中打的错误日志内容和格式变化多样,错误提示上可能残缺不全.没有相关背景.不明其义,使得排查解决问题成为非常不方便或 ...

  9. Java异常处理——日志打印

    目录 小结 使用JDK Logging 使用Commons Logging 使用Log4j 使用SLF4J和Logback 小结 日志是为了替代System.out.println(),可以定义格式, ...

最新文章

  1. R包dplyr进行数据清洗和整理
  2. 如何根据SRA accession number 从NCBI下载数据
  3. 线性回归、逻辑回归、损失函数
  4. 力扣- - 最短回文串(KMP算法)
  5. 用java创建一个单例模式,采用Java实现单例模式
  6. 【Kafka】kafka 脚本kafka-configs.sh用法解析
  7. 女孩,你为什么那么拼命工作?
  8. VS2015 编译libevent库
  9. android计算器括号,计算器(一)——加减和括号
  10. UGNX1957安装说明视频教程
  11. 企业生产现场中5S管理的应用
  12. honeyview(蜂蜜浏览器)将图片置于顶层
  13. Excel单元格显示数据与实际数据不一致的设置与清除
  14. vm连接服务器桌面,Vmware之使用Windows自带的远程桌面连接
  15. HTML5教程之FileList文件列表对象的应用
  16. python凤凰新闻数据分析(四)整合
  17. 合泰杯 | 合泰单片机入门 定时器详解(三)
  18. 获取android设备唯一编号_android获取设备唯一标识完美解决方案的思考以及实现方式...
  19. ‘node‘ 不是内部或外部命令
  20. 项目管理工具Space使用教程:开始使用

热门文章

  1. 舒老师AK的hu测 T2. LX还在迷路(线段树+等差数列)
  2. .net对Excel表数据读写操作
  3. 10月10日~10月17 产品资讯
  4. html图片轮播加上切换按钮,轮播图(点击按钮切换)
  5. SQL语句查询拼音码
  6. Springboot快递管理系统1k61h计算机毕业设计-课程设计-期末作业-毕设程序代做
  7. 【全局规划】人工势场法(APF)
  8. VBS上传文件(转载)
  9. K 近邻算法识别手写数字(Numpy写法)
  10. 大天使之剑武器都在哪掉落?