寫日志到指定的文件:
配置:
<logger name="logAppOperateAndroid" additivity="false">
<appender-ref ref="log-app-operate-android"/>
</logger>
程序中:
private Logger loggerSigFox = LoggerFactory.getLogger("logSigFox");
loggerSigFox.info(message);
這樣愕鼓,就可以把指定的信息低缩,輸出到指定的地方
:通過LevelFilter可以過濾需要的日志等級
這里粉楚,只匹配INFO基本的日志,其他的全部DENY,
這里用的是FileAppender潘酗,講日志輸出到固定的文件上 。也可以使用
class="ch.qos.logback.core.rolling.RollingFileAppender滾動輸入日志雁仲,按照年月日等規(guī)則輸入
<appender name="rollingAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/logs/heuristic-%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<appender name="log-app-operate-android"
class="ch.qos.logback.core.FileAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<file>../log_app_operate_android/log_android.log</file>
<append>true</append>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender>
<logger name="logAppOperateAndroid" additivity="false">
<appender-ref ref="log-app-operate-android"/>
</logger>
控制臺輸出
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>INFO</level>
</filter>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} %L %M- %msg%n</pattern>
</encoder>
</appender>
通過LogStash收集到ELK
<appender name="stash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>WARN</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
<springProfile name="!prod">
<remoteHost>192.168.1.1</remoteHost>
</springProfile>
<springProfile name="prod">
<remoteHost>192.168.2</remoteHost>
</springProfile>
<port>4567</port>
<!-- encoder is required -->
<encoder class="net.logstash.logback.encoder.LogstashEncoder">
<springProfile name="dev">
<customFields>{"service_name":"dev-log-service"}</customFields>
</springProfile>
<springProfile name="test">
<customFields>{"service_name":"test-log-service"}</customFields>
</springProfile>
<springProfile name="release">
<customFields>{"service_name":"release-log-service"}</customFields>
</springProfile>
<springProfile name="prod">
<customFields>{"service_name":"prod-log-service"}</customFields>
</springProfile>
</encoder>
<keepAliveDuration>5 minutes</keepAliveDuration>
</appender>
配置環(huán)境
springProfile name default指按照spring的默認(rèn)文件appliacation.yml啟動
也可以指定:dev,test其他文件啟動仔夺。
如下配置是講本地啟動程序在控制臺輸出,遠(yuǎn)程設(shè)置啟動參數(shù)的日志攒砖,通過上面配置的stash日志缸兔,輸入到ELK
<springProfile name="default">
<root level="INFO"> 這里表示default環(huán)境,只收集INFO級別以下的日志
<appender-ref ref="stdout"/>
</root>
</springProfile>
<springProfile name="!default">
<root level="WARN"> 這里表示非default環(huán)境吹艇,只收集WARN級別以下的日志
<appender-ref ref="stash"/>
</root>
</springProfile>
logback總結(jié)
1.FileAppender:輸出日志到指定文件 RollingFileAppender:根據(jù)規(guī)則生成不同的文件
- LevelFilter 日志等級過濾器灶体,通過
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
過濾指定等級日志。