根据某些条件登录到不同的文件

2024-03-14

我们有一个应用程序。其中我们有一个条件。根据条件,如果条件为真,那么我们会将一些日志消息写入一个文件,否则我们会将消息记录到另一个文件。

并且日志记录应该根据条件而不是根据日志级别进行。

dropwizard 如何使用 yaml 文件?


这是开箱即用的支持。这是我的例子:

server:
  rootPath: /api/*
  requestLog:
    appenders: []
  applicationConnectors:
  - type: http
    port: 9085
logging:
  level: INFO
  loggers:
    "my-log-1":
      level: DEBUG
      additive: false
      appenders:
        - type: file
          currentLogFilename: /home/artur/var/log/test1.log
          archivedLogFilenamePattern: /home/artur/var/log/test1.log%d.log.gz
          archivedFileCount: 5
          logFormat: '[%level] %msg%n'
    "my-log-2":
      level: DEBUG
      additive: false
      appenders:
        - type: file
          currentLogFilename: /home/artur/var/log/test2.log
          archivedLogFilenamePattern: /home/artur/var/log/test2.log%d.log.gz
          archivedFileCount: 5

注意:您不能在配置中使用选项卡。

此配置创建 2 个记录器。第一个称为“my-log-1”,第二个称为“my-log-2”。

您现在可以在 java 类中创建这些记录器,例如在我的应用程序中:

public class Application extends io.dropwizard.Application<Configuration>{


    private static final Logger log = Logger.getLogger("my-log-1");
    private static final Logger log2 = Logger.getLogger("my-log-2");


    @Override
    public void run(Configuration configuration, Environment environment) throws Exception {

        log.info("Test1"); // writes to first file
        log2.info("Test2"); // logs to seconds file



    }

    public static void main(String[] args) throws Exception {
        new Application().run("server", "/home/artur/dev/repo/sandbox/src/main/resources/config/test.yaml");
    }
}

请注意文件顶部的两个记录器及其创建。

您现在可以像任何记录器一样使用它们。添加您的条件并退出:

        int random = new Random().nextInt();

        if(random % 2 == 0) {
            log.info("Test1"); // writes to first file
        } else {
            log2.info("Test2"); // logs to seconds file
        }

我希望这能回答你的问题

thanks,

Artur

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据某些条件登录到不同的文件 的相关文章

随机推荐