我有一个在服务器后台运行的java应用程序。服务器运行的是Amazon Linux2,我的应用程序使用的是log4j V2.11.0。我们使用Maven在服务器上编译一个可执行的jar,然后执行所述jar来运行应用程序。我遇到的问题是,这个应用程序似乎忽略了在log4j2.xml文件中指定的某些值(特别是我的SizeBasedTriggeringPolicy大小和我的IfLastModified年龄值)。
使用的Maven命令:
mvn clean compile assembly:single
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<Properties>
<Property name="log-path" >${sys:log_dir}</Property>
<Property name="log-level" >${sys:log_lvl}</Property>
<Property name="level-num" >${sys:lvl_num}</Property>
<Property name="log-project-name">${sys:log_name}</Property>
<Property name="log-pattern">%d{ISO8601} %-5p [%t|%c{1}] %m\n</Property>
<Property name="rollover-strategy-max">7</Property>
<Property name="rolling-size-based">5 KB</Property>
</Properties>
<Appenders>
<RollingFile name="logFile" fileName="${log-path}/${log-project-name}-logger.log" filePattern="${log-path}/${log-project-name}-debug-%d-%i.log.zip">
<PatternLayout>
<pattern>${log-pattern}</pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="${rolling-size-based}" />
</Policies>
<DefaultRolloverStrategy max="${rollover-strategy-max}">
<Delete basePath="${log-path}" maxDepth="1">
<IfFileName regex="foobar-*.log.zip" />
<IfLastModified age="21D" />
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<logger name="io.switchfour" level="${log-level}" additivity="false">
<AppenderRef ref="logFile" level="${log-level}" />
</logger>
</Loggers>
</configuration>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.0</version>
</dependency>
当我在服务器上编译jar(而不是在IntelliJ中编译它并将其FTPing到服务器)时,我得到了要删除的旧的滚动日志文件。我不知道为什么在服务器上编译jar会有什么不同。如果有人对此有任何见解可以分享,请这样做。我的服务器运行的是Amazon Linux2,而我的计算机运行的是OSX10.13.6。
我使用了以下maven命令来编译JAR:
mvn clean compile assembly:single
我也变了
<IfFileName regex="foobar-*.log.zip" />
<IfLastModified age="21D" />
至
<IfFileName glob="foobar-*.log.zip" />
<IfLastModified age="21d" />
问题内容: 是否可以在任何操作系统(例如Windows,Linux,Mac OS X)上执行JAR文件?我想构建一个要在Linux,Windows和Mac OS X上运行的简单应用程序。JAR文件可以在安装了Java的任何操作系统上运行吗? 问题答案: Jar文件可在存在JVM的任何OS上运行。
问题内容: 一直在尝试学习Docker,让我感到困惑的是,在Docker容器中实际上如何运行与主机操作系统不同的Linux。 如果我们假设我的Docker主机正在运行RedHat并且我从Ubuntu映像启动了一个容器,那么是否满足以下条件?: 从逻辑上讲,如果Ubuntu映像占用空间约为550MB,那么Docker Daemon是否会从映像注册表中实际下载(价值550MB)Ubuntu映像以创
问题内容: 我针对javaee-api编译了程序。但是,对于Junit测试,我必须使用特定的实现(例如glassfish的javaee.jar)来避免类似java.lang.ClassFormatError的错误:类文件javax / persistence / Persistence中不是本机或抽象的方法中的缺少Code属性(另请参见1)。 因此,请避免使用仅在glassfish实现中可用的方法
问题内容: 我已经在系统中配置了网格并编写了测试脚本。我可以在任何指定的操作系统和任何浏览器上运行测试,但一次只能在一个操作系统和一个浏览器上运行测试,而不是同时运行所有操作系统和所有浏览器。这是我所做的。请告诉我如何配置它,以便它可以一次在已配置的操作系统中运行。 我的使用Java的脚本如下: Testng.xml: 问题答案: 阿迪亚 您要在不同或相同系统上运行并行测试的代码(testng.x
您好,我最近在spring项目中将日志记录从log4j迁移到了log4j2。 一切正常,但我想知道如何设置属性
问题内容: 我必须使用大量未明确指定serialVersionUID的已编译Java类。由于它们的UID是由编译器任意生成的,因此即使实际的类定义匹配,许多需要序列化和反序列化的类最终也会导致异常。(当然,这是所有预期的行为。) 对我来说,返回并修复所有第3方代码是不切实际的。 因此,我的问题是:是否有任何方法可以使Java运行时 忽略 serialVersionUID中的差异,并且仅在结构上存在