logback-spring.xml文件配置(日志输出位置的设置)


```xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="1 seconds" debug="false">

    <!--定义参数,后面可以通过${log.file.size}使用-->
    <property name="log.file.size" value="100MB"></property>
    <property name="log.history.days" value="7"></property>
    <!--定义日志输出位置:${LOG_PATH:-LOGS}LOGS是日志的文件夹名,如果想为空使用${LOG_PATH:-.} -->
    <property name="log.path" value="${LOG_PATH:-LOGS}"></property>

    <!--use spring config kv. -->
    <!--<springProperty scope="context" name="log.path" source="project.log.path" defaultValue="./logs"/>-->
    <!-- <springProperty scope="context" name="log.level" source="project.log.level" />-->
    <!--数据库地址-->
    <springProperty scope="context" name="log.dburl" source="project.log.dbPath"/>
    <!--数据库用户名-->
    <springProperty scope="context" name="log.user" source="project.log.username"/>
    <!--数据库密码-->
    <springProperty scope="context" name="log.password" source="project.log.password"/>


    <!-- output format -->
    <property name="consoleLayoutPattern"
              value="%-20(%d{yyyyMMdd_HH:mm:ss.SSS} [%logger{10}][%F:%L])[%level] %msg%n"/>
    <property name="fileLayoutPattern"
              value="%-20(%d{yyyyMMdd_HH:mm:ss.SSS} [%logger{10}]) [%level] %msg%n"/>
    <!--<contextName>${project.name}</contextName>-->

    <!--output to console -->
    <!--ConsoleAppender 用于在屏幕上输出日志-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--定义了一个过滤器,LEVEL之下的日志输出不会被打印出来-->
        <!--这里定义了DEBUG,也就是控制台不会输出比ERROR级别小的日志-->
        <!--        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
                    <level>DEBUG</level>
                </filter>         -->

        <!-- encoder 默认配置为PatternLayoutEncoder -->
        <!--定义控制台输出格式-->
        <encoder>
            <Pattern>${consoleLayoutPattern}</Pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--output to debug file -->
    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>DEBUG</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/debug/%d{yyyy-MM-dd}/debug-log.log</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- output info file -->
    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/info/%d{yyyy-MM-dd}/info-log.log</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- output warn file -->
    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 过滤器,只记录WARN级别的日志 -->
        <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 设置过滤级别 -->
            <level>WARN</level>
            <!-- 用于配置符合过滤条件的操作 -->
            <onMatch>ACCEPT</onMatch>
            <!-- 用于配置不符合过滤条件的操作 -->
            <onMismatch>DENY</onMismatch>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志输出位置 可相对、和绝对路径 -->
            <fileNamePattern>${log.path}/warn/%d{yyyy-MM-dd}/warn-log.log</fileNamePattern>
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!-- output error file -->
    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 过滤器,只记录WARN级别的日志 -->
        <!-- 果日志级别等于配置级别,过滤器会根据onMath 和 onMismatch接收或拒绝日志。 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <!-- 设置过滤级别 -->
            <level>ERROR</level>
            <!-- 用于配置符合过滤条件的操作 -->
            <onMatch>ACCEPT</onMatch>
            <!-- 用于配置不符合过滤条件的操作 -->
            <onMismatch>DENY</onMismatch>
        </filter>
        <!-- 最常用的滚动策略,它根据时间来制定滚动策略.既负责滚动也负责出发滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志输出位置 可相对、和绝对路径 -->
            <fileNamePattern>${log.path}/error/%d{yyyy-MM-dd}/error-log.log</fileNamePattern>
            <!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件假设设置每个月滚动,且<maxHistory>6, 则只保存最近6个月的文件,删除之前的旧文件。注意,删除旧文件是,那些为了归档而创建的目录也会被删除 -->
            <maxHistory>${maxHistory}</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>
                <!-- 设置日志输出格式 -->                %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger - %msg%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>


    <!-- output custom database table-->
    <appender name="CUSTOM_DB" class="net.cnki.cbcm.ems.common.log.LoggerDBAppender">
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
            <driverClass>com.mysql.cj.jdbc.Driver</driverClass>
            <url>${log.dburl}</url>
            <user>${log.user}</user>
            <password>${log.password}</password>
        </connectionSource>
    </appender>

    <!--root是默认的logger 这里设定输出级别是INFO-->
    <!-- non assign profile model  -->
    <root >
        <level value="INFO"/>
        <!--定义了两个appender,日志会通过往这两个appender里面写-->
        <!--DB为logback默认的数据库日志表,CUSTOM_DB为我们自定义的数据日志表,可以只使用一个-->
        <!-- <appender-ref ref="DB" />-->
        <appender-ref ref="CUSTOM_DB"/>
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="DEBUG_FILE"/>
        <appender-ref ref="INFO_FILE"/>
        <appender-ref ref="WARN_FILE"/>
        <appender-ref ref="ERROR_FILE"/>
    </root>
    <!--通过 LoggerFactory.getLogger("mytest") 可以获取到这个logger-->
    <!--由于这个logger自动继承了root的appender,root中已经有CUSTOM_DB的appender了,自己这边又引入了CUSTOM_DB的appender-->
    <!--如果没有设置 additivity="false" ,就会导致一条日志在控制台输出两次的情况-->
    <!--additivity表示要不要使用rootLogger配置的appender进行输出-->
    <!--    <logger name="mytest" level="info" additivity="false">
            <appender-ref ref="CUSTOM_DB"/>
        </logger>-->

    <!--由于设置了 additivity="false" ,所以输出时不会使用rootLogger的appender-->
    <!--但是这个logger本身又没有配置appender,所以使用这个logger输出日志的话就不会输出到任何地方-->
    <!--    <logger name="mytest2" level="info" additivity="false"/>-->

</configuration>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要在 logback-spring.xml 配置 filebeat,需要进行以下步骤: 首先,确保已经在系统中安装并配置好了 filebeat,可以通过下载官方网站提供的 filebeat 安装包并按照提示进行安装,然后在 filebeat.yml 文件中配置好需要收集的日志文件路径和目标 Logstash 或 Elasticsearch 服务器的地址等信息。 接下来,在 logback-spring.xml 文件中进行如下配置。 1. 导入 logstash-logback-encoder 包,可以通过 Maven 或其他方式引入依赖。例如: ```xml <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>6.6</version> </dependency> ``` 2. 在 logback-spring.xml 文件中添加 Appender,配置 filebeat 作为输出目标。例如: ```xml <appender name="FILEBEAT" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/path/to/log/file.log</file> <encoder class="net.logstash.logback.encoder.LogstashEncoder" /> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <fileNamePattern>/path/to/log/file.log.%d{yyyy-MM-dd}.gz</fileNamePattern> </rollingPolicy> </appender> ``` 3. 将 Appender 添加到适当的 Logger 中,例如: ```xml <logger name="com.example.myLogger" level="info"> <appender-ref ref="FILEBEAT" /> </logger> ``` 4. 最后,确保在 logback-spring.xml 文件的配置末尾添加 `<root>` 元素,将级别设置为 `info`,并引用 filebeat appender,以便所有的日志都被发送到 filebeat。例如: ```xml <root level="info"> <appender-ref ref="FILEBEAT" /> </root> ``` 完成上述步骤后,重新启动应用程序,日志将会通过 logback配置写入到指定的日志文件中,然后由 filebeat 负责将日志发送到配置的目标服务器。 ### 回答2: logback是一个流行的Java日志组件,而filebeat是一个开源的日志收集工具,可以将日志发送到指定的目标。 在logback-spring.xml配置filebeat可以实现将应用程序的日志文件发送到filebeat所在的服务器,然后由filebeat将这些日志发送到配置的目标。 首先,在logback-spring.xml中添加以下的appender配置: <appender name="filebeat" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>/path/to/log/file.log</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 配置日志文件的滚动策略,可以按照文件大小或时间进行滚动 --> <fileNamePattern>/path/to/log/file-%d{yyyy-MM-dd}.%i.log</fileNamePattern> <maxFileSize>10MB</maxFileSize> <maxHistory>30</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> 然后,在logback-spring.xml中添加以下的logger配置: <logger name="com.example" level="DEBUG" additivity="false"> <!-- 绑定之前定义的appender --> <appender-ref ref="filebeat"/> </logger> 这样配置之后,将会将com.example包下的日志输出到filebeat所指定的日志文件中。 最后,确保filebeat的配置文件中指定了相应的输入和输出,以正确地收集和发送日志文件的内容。 需要注意的是,配置的路径和文件名需要根据实际情况进行修改。配置完成后,重新启动应用程序,就可以开始将日志发送到filebeat了。 ### 回答3: 在使用logback-spring.xml配置filebeat时,我们需要确保以下几点: 1. 首先,我们需要确定filebeat的安装路径,并在logback-spring.xml文件配置相应的appender。可以通过以下示例配置一个appender: ```xml <appender name="FILEBEAT" class="ch.qos.logback.core.FileAppender"> <file>/path/to/log/file.log</file> <append>true</append> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> ``` 在上述示例中,我们配置了一个名为FILEBEAT的appender,并指定了日志文件的路径。我们还可以根据需求设置是否追加内容以及日志的格式。 2. 之后,我们需要在logback-spring.xml中添加一个root logger,并将appender与root logger关联起来。以下是一个示例配置: ```xml <root level="info"> <appender-ref ref="FILEBEAT"/> </root> ``` 在上述示例中,我们设置root logger的日志级别为info,并将之前配置的FILEBEAT appender与root logger关联起来,以确保日志会被发送到filebeat。 3. 最后,我们需要将filebeat配置文件指向logback-spring.xml。我们可以通过在filebeat配置文件中使用如下示例配置来实现: ```yaml filebeat.inputs: - type: log enabled: true paths: - /path/to/log/file.log output.logstash: hosts: ["localhost:5044"] index: "logback" logging.level: debug logging.to_files: true logging.files: path: /var/log/filebeat name: filebeat keepfiles: 7 ``` 在上述示例配置中,我们将filebeat的输入类型设置为log,并指定需要监控的日志文件路径。同时,我们还指定了logback作为输出类型,并指定了logstash的主机和索引名称。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值