首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在dropwizard中,如何使用yaml文件将System.out.print消息重定向到文件?

在dropwizard中,可以使用yaml文件将System.out.print消息重定向到文件。具体步骤如下:

  1. 在dropwizard的配置文件(通常是config.yaml)中添加以下配置:
代码语言:yaml
复制
logging:
  appenders:
    - type: file
      currentLogFilename: /path/to/log/file.log
      archivedLogFilenamePattern: /path/to/log/file-%d.log.gz
      archivedFileCount: 5
      logFormat: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"

上述配置中,currentLogFilename指定当前日志文件的路径,archivedLogFilenamePattern指定归档日志文件的路径模式,archivedFileCount指定归档文件的数量,logFormat指定日志的格式。

  1. 在应用程序的启动类中,添加以下代码以加载配置文件:
代码语言:java
复制
public class MyApplication extends Application<MyConfiguration> {
    public static void main(String[] args) throws Exception {
        new MyApplication().run(args);
    }

    @Override
    public void initialize(Bootstrap<MyConfiguration> bootstrap) {
        bootstrap.setConfigurationSourceProvider(new SubstitutingSourceProvider(
                bootstrap.getConfigurationSourceProvider(),
                new EnvironmentVariableSubstitutor(false)
        ));
    }

    @Override
    public void run(MyConfiguration configuration, Environment environment) {
        // 其他应用程序初始化代码
    }
}

上述代码中,MyConfiguration是应用程序的配置类,MyApplication是应用程序的启动类。通过bootstrap.setConfigurationSourceProvider方法加载配置文件,并通过SubstitutingSourceProviderEnvironmentVariableSubstitutor进行配置文件中的变量替换。

  1. 在应用程序的启动类中,添加以下代码以重定向System.out.print消息到文件:
代码语言:java
复制
public class MyApplication extends Application<MyConfiguration> {
    public static void main(String[] args) throws Exception {
        PrintStream fileOut = new PrintStream(new FileOutputStream("/path/to/log/file.log"));
        System.setOut(fileOut);

        new MyApplication().run(args);
    }

    // 其他代码...
}

上述代码中,通过System.setOut方法将System.out重定向到指定的文件。

通过以上步骤,就可以在dropwizard中使用yaml文件将System.out.print消息重定向到文件。请注意替换配置文件中的/path/to/log/file.log为实际的日志文件路径。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Tomcat日志系统详解

综合:Tomcat下相关的日志文件 Cataline引擎的日志文件,文件名catalina.日期.log Tomcat下内部代码丢出的日志,文件名localhost.日期.log(jsp页面内部错误的异常,org.apache.jasper.runtime.HttpJspBase.service类丢出的,日志信息就在该文件!) Tomcat下默认manager应用日志,文件名manager.日期.log 控制台输出的日志,Linux下默认重定向到catalina.out Access日志(Servlet.xml配置) 应用程序通过log4j.properties:${catalina.base}/logs/probe.log重定向过来的日志 JULI:org.apache.juli.FileHandler对应的日志文件名:{prefix}.{date}.{suffix} 默认juli.日期.log Tomcat下Web应用程序可以使用如下3种日志: 使用JDK提供的日志java.util.logging. 使用Java Servlets规范中定义的日志javax.servlet.ServletContext.log(...) 使用其他日志框架,如log4j 不同Web应用程序下使用的Servlet日志(或者日志框架提供的日志)是相互独立的(这与Tomcat的class loader有关,参考Class Loader HOW-TO )。如果Web应用程序使用的是java.util.logging日志,那么它们并不相互独立,这是因为java.util.logging是由JAVA系统中的Bootstrap ClassLoader来加载的,因此它在各Web应用程序之间是共享的! Tomcat使用的日志配置文件:$CATALINA_BASE/conf/logging.properties Tomcat日志管理类默认使用的是JULI:LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager" Java的stdout and stderr会被重定向到$CATALINA_BASE/logs/catalina.out,同时:下面2种类型的错误信息,也会被记录在这里 Uncaught exceptions printed by java.lang.ThreadGroup.uncaughtException(.. Thread dumps, if you requested them via a system signal Access访问日志:它与一般的日志有关系但不太一样,它在Servlet.xml中的Context或者 Host或者Engine中配置。在上述的配置节中增加下述的Value就行,具体参考:The Valve Component Xml代码 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".logs" pattern="common" resolveHosts="false"/> Tomcat默认使用JULI日志系统(可以参考官网文档修改成使用log4j),它是对默认的JDK日志java.util.logging进行一定的封装,和标准JDK日志支持相同的配置。最大的不同是针对不同的classloader,可以使用不同的配置文件,使得tomcat下不同的Web应用程序可以使用各自独立的日志文件。也就是说,Tomcat下的默认日志有如下2个层次: 全局配置文件. That is usually done in the ${catalina.base}/conf/logging.properties file. The file is specified by the java.util.logging.config.file System property which is set by the startup scripts. If it is not readable or is not configured, the default is to use the ${java.home}/lib/logging.properties file in the JRE. Web应用程序中使用WEB-INF/classes/logging.properties 默认的JRE中的logging.properties会

06
领券