日志jar包冲突
既然抛了jar包冲突 ,那我们就排除一个jar 包即可。关键是排除哪一个jar包 ,这里注意下了,如果你用的是logback日志,一定要排除slf4j-log4j12包,不要排除logback-classic包。
最重要的是你想使用哪个日志框架?
日志门面,日志实现,桥接包。这三个是必备的。
功能结构:日志框架:slf4j;日志实现:log4j2;桥接包:log4j-slf4j-impl。
需要排除其他的日志依赖。
在项目的配置文件中设置日志配置的地址。
报错的原因已经找到了,日志文件的地址没有指定,以后要注意。
log4j2最大的特点就是异步日志,增加消息队列作为缓存,Log4j2提供了两种实现日志的方式,一个是通过AsyncAppender,一个是通过AsyncLogger,分别对应前面我们说的Appender组件和Logger组件。
日志整合,可以统一到slf4,引用slf4j方式。
web工程需要包含log4j-web,非web工程不需要。
把项目日志系统封装到基础依赖包中。
把请求日志提交给Cat客户端进行监控。
log4j2.xml 配置文件
xml文件,定义一些属性,properties
log4j2.xml的配置,log4j2.xml配置文件中各项标签的意义。
配置文件的名称以及在项目中的存放位置;
1)2.x版本配置文件后缀名只能为".xml",".json"或者".jsn".
2)系统选择配置文件的优先级(从先到后),项目resoureces目录下。
3)一般默认使用log4j2.xml进行命名;
配置文件节点解析:属性和节点。
根节点Configuration有两个属性:status和monitorinterval,有两个子节点:Appenders和Loggers(表明可以定义多个Appender和Logger).只有定义了logger并引入的appender,appender才会生效。
tatus用来指定log4j本身的打印日志的级别.一般生产环境使用info级别,日志的级别。
Appenders节点,常见的有三种子节点:Console、RollingFile、File.
Console节点用来定义输出到控制台的Appender.
1)name:指定Appender的名字.
2)target:SYSTEM_OUT 或 SYSTEM_ERR,一般只设置默认:SYSTEM_OUT.
3)PatternLayout:输出格式,不设置默认为:%m%n.
File节点用来定义输出到指定位置的文件的Appender.
1)name:指定Appender的名字.
2)fileName:指定输出日志的目的文件带全路径的文件名.
3)PatternLayout:输出格式,不设置默认为:%m%n.
RollingFile节点用来定义超过指定大小自动删除旧的创建新的的Appender.
name:指定Appender的名字.
fileName:指定输出日志的目的文件带全路径的文件名.
PatternLayout:输出格式,不设置默认为:%m%n.
filePattern:指定新建日志文件的名称格式.
Policies:指定滚动日志的策略,就是什么时候进行新建日志文件输出日志.
基于时间的滚动策略,基于指定文件大小的滚动策略。
Loggers节点,常见的有两种:Root和Logger.
Appender属于日志处理器。
Logger节点用来单独指定日志的形式,比如要为指定包下的class指定不同的日志级别等。
程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。
不同级别的日志写入到不同的文件中,RollingFile结点。
过滤掉spring和mybatis的一些无用的DEBUG信息。
使用Slf4j集成Log4j2构建项目日志系统;使用slf4j可以很好的保证我们的日志系统具有良好的兼容性,兼容当前常见几种日志系统
slf4j核心包,log4j2核心包,与slf4j保持桥接
一般不是使用slf4j的配置文件么? 统一使用日志门面的还是日志实现的?一般使用日志门面的配置文件。
日志如何每天进行分页?每天创建一个文件夹。
log日志显示的默认格式
日志输出级别,这个修改是如何影响你的代码运行的?
日志配置文件里面是什么? 日志的显示格式,如何分页等?
为什么要关注显示格式?
Kibana是为Elasticsearch设计的开源分析和可视化平台。你可以使用 Kibana 来搜索,查看存储在 Elasticsearch索引中的数据并与之交互。你可以很容易实现高级的数据分析和可视化,以图标的形式展现出来.所有的log数据全部存储在ES上面。
https://www.cnblogs.com/new-life/p/9246143.html
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO" monitorInterval="30">
<properties>
<property name="logPath" value="${sys:LOG_PATH:-/opt/tomcat-log}"/>
<property name="logPatternLayout"
value="[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%-5level] [%t] %class{36}.%M - %msg%xEx%n"/>
<property name="logRolloverSize" value="100M"/>
<property name="logKeepDays" value="15d"/>
<property name="logDirNumberOfFiles" value="300"/>
</properties>
<Appenders>
<!--CONSOLE-->
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout charset="UTF-8" pattern="${logPatternLayout}"/>
</Console>
<!--TRACE-->
<RollingFile name="TRACE" filename="${logPath}/trace.log"
filepattern="${logPath}/$${date:yyyy-MM-dd}/trace-%d{yyyyMMdd}-%i.log">
<PatternLayout charset="UTF-8" pattern="${logPatternLayout}"/>
<Filters>
<ThresholdFilter level="debug" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${logRolloverSize}"/>
</Policies>
<DefaultRolloverStrategy max="${logDirNumberOfFiles}">
<Delete basePath="${logPath}" maxDepth="3">
<IfFileName glob="*/trace*.log"/>
<IfLastModified age="${logKeepDays}"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<!--DEBUG-->
<RollingFile name="DEBUG" filename="${logPath}/debug.log"
filepattern="${logPath}/$${date:yyyy-MM-dd}/debug-%d{yyyyMMdd}-%i.log">
<PatternLayout charset="UTF-8" pattern="${logPatternLayout}"/>
<Filters>
<ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${logRolloverSize}"/>
</Policies>
<DefaultRolloverStrategy max="${logDirNumberOfFiles}">
<Delete basePath="${logPath}" maxDepth="3">
<IfFileName glob="*/debug*.log"/>
<IfLastModified age="${logKeepDays}"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<!--INFO-->
<RollingFile name="INFO" filename="${logPath}/info.log"
filepattern="${logPath}/$${date:yyyy-MM-dd}/info-%d{yyyyMMdd}-%i.log">
<PatternLayout charset="UTF-8" pattern="${logPatternLayout}"/>
<Filters>
<ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${logRolloverSize}"/>
</Policies>
<DefaultRolloverStrategy max="${logDirNumberOfFiles}">
<Delete basePath="${logPath}" maxDepth="3">
<IfFileName glob="*/info*.log"/>
<IfLastModified age="${logKeepDays}"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<!--WARN-->
<RollingFile name="WARN" filename="${logPath}/warn.log"
filepattern="${logPath}/$${date:yyyy-MM-dd}/warn-%d{yyyyMMdd}-%i.log">
<PatternLayout charset="UTF-8" pattern="${logPatternLayout}"/>
<Filters>
<ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/>
<ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${logRolloverSize}"/>
</Policies>
<DefaultRolloverStrategy max="${logDirNumberOfFiles}">
<Delete basePath="${logPath}" maxDepth="3">
<IfFileName glob="*/warn*.log"/>
<IfLastModified age="${logKeepDays}"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<!--ERROR-->
<RollingFile name="ERROR" filename="${logPath}/error.log"
filepattern="${logPath}/$${date:yyyy-MM-dd}/error-%d{yyyyMMdd}-%i.log">
<PatternLayout charset="UTF-8" pattern="${logPatternLayout}"/>
<Filters>
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${logRolloverSize}"/>
</Policies>
<DefaultRolloverStrategy max="${logDirNumberOfFiles}">
<Delete basePath="${logPath}" maxDepth="3">
<IfFileName glob="*/error*.log"/>
<IfLastModified age="${logKeepDays}"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<CatAppender name="CatAppender"/>
</Appenders>
<Loggers>
<Root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="TRACE"/>
<appender-ref ref="DEBUG"/>
<appender-ref ref="INFO"/>
<appender-ref ref="WARN"/>
<appender-ref ref="ERROR"/>
<appender-ref ref="CatAppender"/>
</Root>
<Logger name="org.apache.catalina.startup.DigesterFactory" level="error"/>
<Logger name="org.apache.catalina.util.LifecycleBase" level="error"/>
<Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn"/>
<logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
<Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn"/>
<Logger name="org.crsh.plugin" level="warn"/>
<logger name="org.crsh.ssh" level="warn"/>
<Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error"/>
<Logger name="org.hibernate.validator.internal.util.Version" level="warn"/>
<logger name="org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration" level="warn"/>
<logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
<logger name="org.thymeleaf" level="warn"/>
</Loggers>
</Configuration>