写日志到指定的文件:
配置:
<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滚动输入日志,按照年月日等规则输入
<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>
配置环境
springProfile name default指按照spring的默认文件appliacation.yml启动
也可以指定:dev,test其他文件启动。
如下配置是讲本地启动程序在控制台输出,远程设置启动参数的日志,通过上面配置的stash日志,输入到ELK
<springProfile name="default">
<root level="INFO"> 这里表示default环境,只收集INFO级别以下的日志
<appender-ref ref="stdout"/>
</root>
</springProfile>
<springProfile name="!default">
<root level="WARN"> 这里表示非default环境,只收集WARN级别以下的日志
<appender-ref ref="stash"/>
</root>
</springProfile>
logback总结
1.FileAppender:输出日志到指定文件 RollingFileAppender:根据规则生成不同的文件
- LevelFilter 日志等级过滤器,通过
<level>INFO</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
过滤指定等级日志。