您的位置:首页 > 其它

log4j+log4j2+logback+syslog+graylog

2018-02-12 15:01 183 查看
下面说一下 log4j,log4j2,logback如何将日志写入graylog中
log4j:<!-- 日志写入graylog中 只记录慢sql日志 慢SQL使用的facility是local1 其他日志请不要使用local1
Log4j自带的SyslogAppender 只能配置接受syslog日志的主机地址,端口不可配置,使用默认的:514
pom:
<dependency>
<groupId>org.syslog4j</groupId>
<artifactId>syslog4j</artifactId>
<version>0.9.30</version>
</dependency>
-->
<appender name="syslogAppender" class="org.productivity.java.syslog4j.impl.log4j.Syslog4jAppender">
<param name="SyslogHost" value="172.16.2.167"/>
<param name="Port" value="8888"/><!-- input节点端口 -->
<param name="Facility" value="LOCAL1"/>
<param name="Protocol" value="UDP"/>
<param name="header" value="true"/>
<param name="Threshold" value="INFO"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss\}][%-5p] [%t] [%c:%L]-%m%n"/>
</layout>
</appender>log4j2:<?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>

<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>maven:<dependencies>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.7</version>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>

<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.2</version>
</dependency>
</dependencies>
logback:<?xml version="1.0" encoding="UTF-8"?>
<configuration>

<property name="log.path" value="D:/logtest/logback/asy_50_100000" />

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>[%d{yyyy-MM-dd HH:mm:ss}][%-5p] [%t] [%c:%L]-%m%n</pattern>
</encoder>
</appender>

<!--文件输出的格式设置 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 日志日常打印文件 -->
<file>${log.path}/log_test.log</file>
<!-- 配置日志所生成的目录以及生成文件名的规则 在logs/mylog-2017-06-31.0.log.zip -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${log.path}/log_test-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!--文件达到 最大128MB时会被压缩和切割 -->
<maxFileSize>100 MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>DEBUG</level>
</filter>
<!-- 文件输出的日志 的格式 -->
<encoder>
<pattern>
[%d{yyyy-MM-dd HH:mm:ss}][%-5p] [%t] [%c:%L]-%m%n
</pattern>
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
</appender>

<appender name="bizSyslogAppender" class="ch.qos.logback.classic.net.SyslogAppender">
<syslogHost>172.16.2.167</syslogHost>
<port>3333</port>
<facility>LOCAL0</facility>
<suffixPattern>[%d{yyyy-MM-dd HH:mm:ss}][%-5p] [%t] [%c:%L]-%m%n%xException</suffixPattern>
</appender>

<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender"><!--配置异步打印info信息-->
<!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
<discardingThreshold>0</discardingThreshold>
<!-- 更改默认的队列的深度,该值会影响性能.默认值为256 -->
<queueSize>256</queueSize>
<appender-ref ref="bizSyslogAppender" />
</appender>

<root level="debug"><!--指定所有要执行的appender-->
<!-- <appender-ref ref="STDOUT" /> -->
<appender-ref ref="ASYNC" />
<!-- <appender-ref ref="bizSyslogAppender" /> -->
</root>

</configuration>maven:<dependencies>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.12</version>
</dependency>

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.1.3</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.1.3</version>
</dependency>

<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.2</version>
</dependency>
</dependencies>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息