gpt4 book ai didi

java - 我如何在我的 vert.x 应用程序中使用独立的 log4j 实例?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:21:36 26 4
gpt4 key购买 nike

我正在开发一个 vert.x 应用程序。具体来说,我使用的是 Java + Eclipse + Maven + Vert.x。我读到 JUL 是首选的日志记录框架,vertx.log 保存在/tmp 下(我是 linux 用户)。实际上,我想使用 log4j 并在自定义日志文件夹下生成不同的日志文件。我怎样才能做到这一点? vert.x 文档说 ( http://vertx.io/manual.html#logging ):

If you don't want to use the Vert.x provided logging facilities that's fine. You can just use your preferred logging framework as normal and include the logging jar and config in your module.

所以我尝试将 log4j 依赖项包含到我的 pom.xml 中,将 log4j.xml 文件复制到 src/main/resources 并在我的 Verticle 类中定义一个 logger 变量,但是控制台不打印任何内容。 . 我哪里做错了?

谢谢,弗朗切斯科

EDIT1:我的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>it.uniroma1.dis.wsngroup</groupId>
<artifactId>wochat</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>WoChat</name>

<parent>
<groupId>org.sonatype.oss</groupId>
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<!-- Set pullInDeps to true if you want any modules specified in the 'includes' and 'deploys' fields
in your mod.json to be automatically pulled in during packaging and added inside your module. Doing this means your
module won't download and install those dependencies at run-time when they're first requested. -->
<vertx.pullInDeps>false</vertx.pullInDeps>

<!-- Set createFatJar to true if you want to create a fat executable jar which contains the Vert.x binaries
along with the module so it can be run with java -jar <jarname> -->
<vertx.createFatJar>false</vertx.createFatJar>

<!--Vertx module name-->
<module.name>${project.groupId}~${project.artifactId}~${project.version}</module.name>

<!-- The directory where the module will be assembled - you can override this on the command line
with -Dmods.directory=mydir -->
<mods.directory>target/mods</mods.directory>

<!--Dependency versions-->
<vertx.version>2.1M1</vertx.version>
<vertx.testtools.version>2.0.2-final</vertx.testtools.version>
<junit.version>4.11</junit.version>

<!--Plugin versions-->
<maven.compiler.plugin.version>3.0</maven.compiler.plugin.version>
<maven.resources.plugin.version>2.6</maven.resources.plugin.version>
<maven.clean.plugin.version>2.5</maven.clean.plugin.version>
<maven.vertx.plugin.version>2.0.1-final</maven.vertx.plugin.version>
<maven.surefire.plugin.version>2.14</maven.surefire.plugin.version>
<maven.failsafe.plugin.version>2.14</maven.failsafe.plugin.version>
<maven.surefire.report.plugin.version>2.14</maven.surefire.report.plugin.version>
<maven.javadoc.plugin.version>2.9</maven.javadoc.plugin.version>
<maven.dependency.plugin.version>2.7</maven.dependency.plugin.version>
</properties>

<repositories>
<repository>
<id>sonatype-nexus-snapshots</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>

<dependencies>
<!--Vertx provided dependencies-->
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-core</artifactId>
<version>${vertx.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-platform</artifactId>
<version>${vertx.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-hazelcast</artifactId>
<version>${vertx.version}</version>
<scope>provided</scope>
</dependency>
<!--Test dependencies-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.vertx</groupId>
<artifactId>testtools</artifactId>
<version>${vertx.testtools.version}</version>
<scope>test</scope>
</dependency>

<!-- Add any other dependencies that you want packaged into your module (in the lib dir) here
as 'compile' dependencies. Here is an example
<dependency>
<groupId>org.hamcrest</groupId>
<artifactId>hamcrest-core</artifactId>
<version>1.3</version>
<scope>compile</scope>
</dependency>
-->

</dependencies>

<build>
<plugins>

<!-- The vert.x Maven plugin -->
<plugin>
<groupId>io.vertx</groupId>
<artifactId>vertx-maven-plugin</artifactId>
<version>${maven.vertx.plugin.version}</version>
<!--
You can specify extra config to the plugin as required here
<configuration>
<configFile>/path/to/MyVerticle.conf</configFile>
<instances>1</instances>
<classpath>src/main/resources/:src/test/resources/:target/classes/:target/test-classes/</classpath>
</configuration>
-->
<executions>
<execution>
<id>PullInDeps</id>
<phase>prepare-package</phase>
<goals>
<goal>pullInDeps</goal>
</goals>
</execution>
</executions>
</plugin>

<!-- Other plugins required by the build -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin.version}</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>${maven.resources.plugin.version}</version>
<executions>
<execution>
<id>copy-mod-to-target</id>
<phase>process-classes</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${mods.directory}/${module.name}</outputDirectory>
<resources>
<resource>
<directory>target/classes</directory>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>${maven.dependency.plugin.version}</version>
<executions>
<execution>
<id>copy-mod-dependencies-to-target</id>
<phase>process-classes</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${mods.directory}/${module.name}/lib</outputDirectory>
<includeScope>runtime</includeScope>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${maven.surefire.plugin.version}</version>
<configuration>
<includes>
<include>**/unit/*Test*.java</include>
</includes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>${maven.failsafe.plugin.version}</version>
<configuration>
<systemProperties>
<property>
<name>vertx.mods</name>
<value>${mods.directory}</value>
</property>
</systemProperties>
<includes>
<include>**/integration/**</include>
</includes>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>${maven.surefire.report.plugin.version}</version>
<executions>
<execution>
<id>generate-test-report</id>
<phase>test</phase>
<goals>
<goal>report-only</goal>
</goals>
</execution>
<execution>
<id>generate-integration-test-report</id>
<phase>integration-test</phase>
<goals>
<goal>failsafe-report-only</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
<descriptor>src/main/assembly/mod.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>assemble</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!--This plugin's configuration is used to store Eclipse m2e settings
only. It has no influence on the Maven build itself.
http://stackoverflow.com/questions/8706017/maven-dependency-plugin-goals-copy-dependencies-unpack-is-not-supported-b
-->
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-dependency-plugin
</artifactId>
<versionRange>[2.7,)</versionRange>
<goals>
<goal>copy-dependencies</goal>
</goals>
</pluginExecutionFilter>
<action>
<ignore></ignore>
</action>
</pluginExecution>
</pluginExecutions>
</lifecycleMappingMetadata>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<reporting>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>${maven.surefire.report.plugin.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>${maven.javadoc.plugin.version}</version>
<configuration>
<aggregate>true</aggregate>
</configuration>
</plugin>
</plugins>
</reporting>
</project>

EDIT2:我的 log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
<appender name="Console" class="org.apache.log4j.ConsoleAppender">
<param name="Threshold" value="DEBUG"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%F:%L] - %m%n" />
</layout>
</appender>

<appender name="Generic_File" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="logs/wochat.log"/>
<param name="Threshold" value="DEBUG"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%F:%L] - %m%n" />
</layout>
</appender>

<appender name="Interactions_Log_File" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="logs/interactions.log"/>
<param name="Threshold" value="INFO"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n" />
</layout>
</appender>

<appender name="Messages_Log_File" class="org.apache.log4j.DailyRollingFileAppender">
<param name="File" value="logs/messages.log"/>
<param name="Threshold" value="INFO"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%m%n" />
</layout>
</appender>

<logger name="it.uniroma1.dis.wsngroup.wochat.logging.LogInteraction" additivity="false">
<level value="INFO" />
<appender-ref ref="Interactions_Log_File" />
</logger>

<logger name="it.uniroma1.dis.wsngroup.wochat.logging.LogMessage" additivity="false">
<level value="INFO" />
<appender-ref ref="Messages_Log_File" />
</logger>

<root>
<level value="DEBUG" />
<appender-ref ref="Console" />
<appender-ref ref="Generic_File" />
</root>
</log4j:configuration>

最佳答案

这里是官方话题:https://groups.google.com/forum/#!topic/vertx/xhA9Gze1LM4

作者正在调查为什么它不起作用。与此同时,他建议使用:

-Dlog4j.configuration=file:./your_path/log4j.xml

关于java - 我如何在我的 vert.x 应用程序中使用独立的 log4j 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20927903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com