zoukankan      html  css  js  c++  java
  • logback日志文件位置动态指定

    logback日志文件位置动态指定

    参考:https://stackoverflow.com/questions/19518843/logback-configuration-via-jvm-argument

    logback相关配置,其中${LOG_HOME}表示为环境变量,在java启动应用程序时,通过java -DLOG_HOME="路径"来指定的,可以动态去设置它的地址。

    <?xml version="1.0" encoding="UTF-8" ?>
    
    <configuration>
         <property name="logPath" value="${LOG_HOME-/home}/logs" />
    
        <!--  日志打印的格式 -->
        <appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>
                    %d - %msg%n
                </pattern>
            </layout>
        </appender>
    
        <!-- info 状态下的日志   -->
        <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <onMatch>DENY</onMatch>
                <onMismatch>ACCEPT</onMismatch>
            </filter>
            <encoder>
                <pattern>
                    %d{yyyy-MM-dd HH:mm:ss.SSS} %10logger [%thread]  :  %msg%n
                </pattern>
            </encoder>
            <!--滚动策略-->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
               <fileNamePattern>${logPath}/info.%d.log</fileNamePattern>
                <maxHistory>7</maxHistory>
            </rollingPolicy>
        </appender>
    
        <!--  错误级别的日志文件  -->
        <appender name="fileErrorLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                <level>ERROR</level>
            </filter>
            <encoder>
                <pattern>
                    %d{yyyy-MM-dd HH:mm:ss.SSS} %10logger [%thread]  :  %msg%n
                </pattern>
            </encoder>
            <!--滚动策略-->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
             <fileNamePattern>${logPath}/error.%d.log</fileNamePattern>
                <maxHistory>7</maxHistory>
            </rollingPolicy>
        </appender>
    
        <root level="info">
            <appender-ref ref="consoleLog" />
            <appender-ref ref="fileInfoLog" />
            <appender-ref ref="fileErrorLog" />
        </root>
    
    </configuration>
    

    上面代码中${LOG_HOME-/home}/logs表示,如果没有传入环境变量LOG_HOME,然后就使用后面的/home路径,对于windows系统来说,/home表示当前jar包所在的盘符。

    项目启动

     java -Dlogback_home="c:\logs" -jar eureka.jar
    
    

    这样就把日志文件存储到了C盘logs目录了。

    docker容器时指定

    docker run -d -p 7070:7070 -m 200M -e JAVA_OPTIONS='-Dlogback_home="/deployments/'  eurekaserver
    
  • 相关阅读:
    SQL Server 性能优化之——T-SQL TVF和标量函数
    SQL Server 性能优化之——T-SQL 临时表、表变量、UNION
    Posix消息队列实现机制
    进程间通信基础知识整理
    进程间通信——FIFO(多个客户进程,一个服务进程)
    VMware+CentOS7+jdk1.7+hadoop2.4.1
    Java并发编程
    java并发编程
    读书笔记——Java IO
    读书笔记——异常
  • 原文地址:https://www.cnblogs.com/lori/p/11888911.html
Copyright © 2011-2022 走看看