我们有一个应用程序。其中我们有一个条件。根据条件,如果条件为真,那么我们会将一些日志消息写入一个文件,否则我们会将消息记录到另一个文件。
并且日志记录应该根据条件而不是根据日志级别进行。
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(使用前将#替换为@)