Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用vertx-default-jul-logging.properties文件来控制文件的格式和数量?_Java_Vert.x - Fatal编程技术网

Java 如何使用vertx-default-jul-logging.properties文件来控制文件的格式和数量?

Java 如何使用vertx-default-jul-logging.properties文件来控制文件的格式和数量?,java,vert.x,Java,Vert.x,我正在与这个叫我使用的Vertx软件包斗争。 所有日志记录都要使用Vertx(io.Vertx.core.logging.Logger)完成 我今天可以使用vertx-default-jul-logging.properties文件注销到一个文件。 我一直坚持的是这三件事。(是的,我已经在网上阅读了很多文档。我只需要看到一个完整的工作属性文件,里面有写出来的内容) 1.如何指定多个输出文件,以便某些文件转到mmddyy class.method.log 第二个文件是mmddyy audit.lo

我正在与这个叫我使用的Vertx软件包斗争。 所有日志记录都要使用Vertx(io.Vertx.core.logging.Logger)完成

我今天可以使用vertx-default-jul-logging.properties文件注销到一个文件。 我一直坚持的是这三件事。(是的,我已经在网上阅读了很多文档。我只需要看到一个完整的工作属性文件,里面有写出来的内容) 1.如何指定多个输出文件,以便某些文件转到mmddyy class.method.log 第二个文件是mmddyy audit.log

  • 如何控制内容的输出,使日志的格式为{“yy-MM-dd”}[%-5level]%class{15}。%M:%L-%msg%n

  • 您可以向我指出的任何可靠资源都有一些关于在这个vertx-default-jul-logging.properties文件中编写适当内容的教程,因为我已经花了一天的时间在这个文件上,我认为不需要花这么长时间


  • 感谢您的帮助。

    您应该先阅读官方文档中的小章节。重要的是,它解释了即使JUL是默认值,如果您愿意,也可以使用任何其他日志框架:

    • log4j
    • slf4j
    • log4j2
    vert.x logger类提供给您的只是一个抽象,无论下面是什么,它都隐藏在您的代码中,如果您希望更改它,您不需要更改代码

    如果仍要使用JUL,则可以在配置中配置日志的格式:

    # here you specify who's going to handle the logs
    # for this example I'll use only the console
    handlers=java.util.logging.ConsoleHandler
    # now you specify the format
    java.util.logging.SimpleFormatter.format=%5$s %6$s\n
    # and now you tell the console to use that format
    java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
    

    这些是配置的基础,为了控制格式,这里指定了语法

    首先,如果您仍然想使用JUL,请放弃此答案;否则,继续阅读

    我正在使用Vert.x
    3.3.3
    并将所有日志通过/重定向到Log4J 2.x-类似的方法适用于Logback/SLF4J

    您首先需要添加/包括这些依赖项(我使用的是Gradle;如果可用,请更新版本):

    然后创建一个名为
    ${projectRoot}/src/main/resources/log4j2.xml的文件,并向其中添加以下“内容”:

    这样就可以了——但是使用log4j2.x。请记住,Vert.x本质上(或某种程度上)是异步的,并且此配置还使用异步记录器,因此需要(awesome IMO)
    LMAX Disruptor


    还请注意,您需要更改应用程序的包名(请参阅
    AsyncLogger
    定义;我使用了
    your.package.name
    ),并最终更改所需格式的
    日志模式。

    我昨天一整天都在尝试您提到的内容。今天,我清除了我的整个属性文件,只输入了最基本的属性,比如您拥有的属性。输出的格式永远不会改变。我能想到的唯一一件事是,它正在从我不知道的其他区域读取属性文件。如果您正在使用该方法,或者如果您正在使用其他方法运行,则需要在fat jar中提供该文件,您需要使用以下方法启动jvm:
    java-Djava.util.logging.config.file=your-config.properties…
    compile 'com.lmax:disruptor:3.3.5'
    compile 'org.apache.logging.log4j:log4j-1.2-api:2.7'
    compile 'org.apache.logging.log4j:log4j-jcl:2.7'
    compile 'org.apache.logging.log4j:log4j-jul:2.7'
    compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.7'
    
    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration>
      <Properties>
        <Property name="log-pattern">%d{MM-dd-yyyy HH:mm:ss.SSS} |- %highlight{%5p}{TRACE=blue, DEBUG=green, INFO=green, WARN=yellow, ERROR=red, FATAL=red} in %style{%C{1}:%L}{cyan} [%style{%t}{magenta}] - %m%n</Property>
      </Properties>
    
      <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
          <PatternLayout pattern="${log-pattern}" />
        </Console>
      </Appenders>
    
      <!-- Logger levels: trace, debug, info, warn, error, fatal -->
      <Loggers>
        <AsyncLogger name="your.package.name" level="DEBUG" additivity="false" includeLocation="true">
          <AppenderRef ref="Console" />
        </AsyncLogger>
    
        <Root level="WARN">
          <AppenderRef ref="Console"/>
        </Root>
      </Loggers>
    </Configuration>
    
    ...
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    public final class Application extends AbstractVerticle {
      final Logger LOGGER = LogManager.getLogger();
    
      ...
    }