log4j日志替换成log4j2日志和集成graylog
2018-02-12 14:45
1206 查看
公司现在的日志是使用的log4j记录的,代码中使用的是sl4j这种日志切面. 运维那边 弄了个graylog日志才加系统,现在需要将日志记录到graylog中和将log4j日志改成log4j2,具体方法如下;
注意:这只是要修改的部分,不是完整版
maven配置 <!-- druid监控sql版本,高版本的才支持log4j2 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.5</version>
</dependency>web.xml配置 <context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j2.xml</param-value>
</context-param>
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>log4j2.xml配置<?xml version="1.0" encoding="UTF-8"?>
<!-- 优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL -->
<!-- status用来指定log4j本身的打印日志的级别.
monitorinterval用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s.
-->
<Configuration strict="true">
<Properties>
<Property name="logbasedir">D:/ttpai_boss_log</Property>
<Property name="APPNAME">log_test</Property>
<Property name="log.layout">[%d{yyyy-MM-dd HH:mm:ss}][%-5p] [%t] [%c:%L]-%m%n</Property>
</Properties>
<!--此处使用了两种类型的appender,RollingFile为滚动类型,满足策略条件后会新建文件夹记录 -->
<Appenders>
<Appender type="Console" name="STDOUT">
<Target>SYSTEM_OUT</Target>
<Layout type="PatternLayout" pattern="${log.layout}"/>
</Appender>
<RollingFile name="FILE" fileName="${logbasedir}/${APPNAME}.log"
filePattern = "${logbasedir}/${APPNAME}-%d{yyyy-MM-dd}.%i.log">
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="50"/><!-- 默认值是7 -->
<Layout type="PatternLayout">
<Charset>UTF-8</Charset>
<Pattern>${log.layout}</Pattern>
</Layout>
</RollingFile>
<!--这么配置打印到graylog中的格式是自定义的 host:graylog的主机ip port:graylog input的端口 -->
<Socket name="syslog" host="172.16.2.167" port="2222" protocol="UDP">
<PatternLayout
pattern="${log.layout}" />
</Socket>
</Appenders>
<Loggers>
<Logger name="com.alibaba.druid.filter.stat.StatFilter" level="debug" additivity="false"> -->
<appender-ref ref="FILE"/>
<!-- <AppenderRef ref="syslog"/> -->
<AppenderRef ref="STDOUT"/>
</Logger>
<!-- <asyncRoot level="debug" includeLocation="true" additivity="false"> -->
<!-- <AppenderRef ref="STDOUT"/> -->
<!-- <AppenderRef ref="FILE"/> -->
<!-- <AppenderRef ref="syslog"/> -->
<!-- </asyncRoot> -->
<Root level="debug">
<!-- <AppenderRef ref="STDOUT"/> -->
<!-- <AppenderRef ref="FILE"/> -->
<!-- <AppenderRef ref="syslog"/> -->
</Root>
</Loggers>
</Configuration>druid.xml <bean id="druidStatFilter" class="com.alibaba.druid.filter.stat.StatFilter">
<property name="slowSqlMillis" value="1"/>
<property name="logSlowSql" value="true"/>
<property name="mergeSql" value="true"/>
</bean>
<bean id="druidLogFilter" class="com.alibaba.druid.filter.logging.Log4j2Filter">
<property name="resultSetLogEnabled" value="false"/>
<property name="statementExecutableSqlLogEnable" value="true"/>
</bean>
注意:这只是要修改的部分,不是完整版
maven配置 <!-- druid监控sql版本,高版本的才支持log4j2 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.6</version>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${org.slf4j-version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.5</version>
</dependency>web.xml配置 <context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j2.xml</param-value>
</context-param>
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>log4j2.xml配置<?xml version="1.0" encoding="UTF-8"?>
<!-- 优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL -->
<!-- status用来指定log4j本身的打印日志的级别.
monitorinterval用于指定log4j自动重新配置的监测间隔时间,单位是s,最小是5s.
-->
<Configuration strict="true">
<Properties>
<Property name="logbasedir">D:/ttpai_boss_log</Property>
<Property name="APPNAME">log_test</Property>
<Property name="log.layout">[%d{yyyy-MM-dd HH:mm:ss}][%-5p] [%t] [%c:%L]-%m%n</Property>
</Properties>
<!--此处使用了两种类型的appender,RollingFile为滚动类型,满足策略条件后会新建文件夹记录 -->
<Appenders>
<Appender type="Console" name="STDOUT">
<Target>SYSTEM_OUT</Target>
<Layout type="PatternLayout" pattern="${log.layout}"/>
</Appender>
<RollingFile name="FILE" fileName="${logbasedir}/${APPNAME}.log"
filePattern = "${logbasedir}/${APPNAME}-%d{yyyy-MM-dd}.%i.log">
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100MB"/>
</Policies>
<DefaultRolloverStrategy max="50"/><!-- 默认值是7 -->
<Layout type="PatternLayout">
<Charset>UTF-8</Charset>
<Pattern>${log.layout}</Pattern>
</Layout>
</RollingFile>
<!--这么配置打印到graylog中的格式是自定义的 host:graylog的主机ip port:graylog input的端口 -->
<Socket name="syslog" host="172.16.2.167" port="2222" protocol="UDP">
<PatternLayout
pattern="${log.layout}" />
</Socket>
</Appenders>
<Loggers>
<Logger name="com.alibaba.druid.filter.stat.StatFilter" level="debug" additivity="false"> -->
<appender-ref ref="FILE"/>
<!-- <AppenderRef ref="syslog"/> -->
<AppenderRef ref="STDOUT"/>
</Logger>
<!-- <asyncRoot level="debug" includeLocation="true" additivity="false"> -->
<!-- <AppenderRef ref="STDOUT"/> -->
<!-- <AppenderRef ref="FILE"/> -->
<!-- <AppenderRef ref="syslog"/> -->
<!-- </asyncRoot> -->
<Root level="debug">
<!-- <AppenderRef ref="STDOUT"/> -->
<!-- <AppenderRef ref="FILE"/> -->
<!-- <AppenderRef ref="syslog"/> -->
</Root>
</Loggers>
</Configuration>druid.xml <bean id="druidStatFilter" class="com.alibaba.druid.filter.stat.StatFilter">
<property name="slowSqlMillis" value="1"/>
<property name="logSlowSql" value="true"/>
<property name="mergeSql" value="true"/>
</bean>
<bean id="druidLogFilter" class="com.alibaba.druid.filter.logging.Log4j2Filter">
<property name="resultSetLogEnabled" value="false"/>
<property name="statementExecutableSqlLogEnable" value="true"/>
</bean>
<!-- dataSource配置 ,采用阿里的Druid --> <bean id="abstractDruidDataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close" abstract="true"> <!-- 配置初始化大小、最小、最大 --> <property name="initialSize" value="${boss.jdbc.initialSize}"/> <property name="minIdle" value="${boss.jdbc.minIdle}"/> <property name="maxActive" value="${boss.jdbc.maxActive}"/> <!-- 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。 --> <property name="maxWait" value="${boss.jdbc.maxWait}"/> <!-- 用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。 --> <property name="validationQuery" value="${boss.jdbc.validationQuery}"/> <property name="testWhileIdle" value="${boss.jdbc.testWhileIdle}"/> <property name="testOnBorrow" value="${boss.jdbc.testOnBorrow}"/> <property name="testOnReturn" value="${boss.jdbc.testOnReturn}"/> <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> <property name="timeBetweenEvictionRunsMillis" value="${boss.jdbc.timeBetweenEvictionRunsMillis}"/> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> <property name="minEvictableIdleTimeMillis" value="${boss.jdbc.minEvictableIdleTimeMillis}"/> <!-- 配置监控统计拦截的filters 属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有: 监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall --> <property name="proxyFilters"> <list> <ref bean="druidStatFilter"/> <ref bean="druidLogFilter"/> <!-- <ref bean="druidWallFilter"/> --> </list> </property> </bean>
相关文章推荐
- Java日志框架slf4j、jcl、jul、log4j1、log4j2、logback大总结
- Java日志相关记录 (Jul jcl log4j log4j2 Logback SLF4J)
- Java日志框架slf4j、jcl、jul、log4j1、log4j2、logback大总结
- spring中使用logback日志组件替换log4j
- log4j使用SocketAppender推送日志到远程服务器(包含log4j如何升级到log4j2,并使用SocketAppender发送日志到LogStash)
- Log4j2的日志配置文件,log4j2.xml文件的配置(实现控制台输出,各级别分别文件输出,自动压缩等)
- spring中使用logback日志组件替换log4j
- spring 中使用 logback打印日志,替换其他日志如log4j,commons-logging
- SSM框架day01——011——log4j的日志输出控制文件、012——log4j2的日志输出控制文件解析
- Log4j2的日志配置文件,log4j2.xml文件的配置(实现控制台输出,各级别分别文件输出,自动压缩等)
- Java日志框架slf4j、jcl、jul、log4j1、log4j2、logback大总结
- Log4j,Log4j2,logback,slf4j日志学习
- log4j替换tomcat默认日志
- spring中使用logback日志组件替换log4j
- 扔掉log4j、log4j2,自己动手实现一个多功能日志记录框架,包含文件,数据库日志写入,实测5W+/秒日志文件写入,2W+/秒数据库日志写入,虽然它现在还没有logback那么强大
- 将spark默认日志log4j替换为logback
- jdk-logging log4j1 log4j2 logback 日志框架介绍
- Log4j2的日志配置文件,log4j2.xml文件的配置(实现控制台输出,各级别分别文件输出,自动压缩等)
- 使用log4j2打印Log,log4j不能打印日志信息,log4j2不能打印日志信息,log4j和logj2,idea控制台信息乱码(文末)
- spring中使用logback日志组件替换log4j