下面說一下 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>