logback.xm配置解析

写日志到指定的文件:
配置:
<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:根据规则生成不同的文件

  1. LevelFilter 日志等级过滤器,通过
           <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>

过滤指定等级日志。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 5,080评论 1 13
  • 一:根节点包含的属性: scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为tru...
    把爱放下会走更远阅读 652评论 0 0
  • Log Java日志:(slf4j、log4j、logback、common-logging ) slf4j 是规...
    年少懵懂丶流年梦阅读 17,670评论 1 11
  • 01 作为宋朝第一男神的苏轼什么东西最多? 我想除了才华,应该就是朋友了。 他的朋友可谓形形色色,各式各样,上至名...
    周公子爱读书阅读 12,858评论 10 24