草庐IT

java - 如何将应用程序审计记录到 Wildfly 8 上的单独文件

我有一个在Wildfly8上运行的JavaEE应用程序,我想在其中启用审计日志记录。使用InterceptorBinding和Interceptor,我能够捕获所有相关的API调用。我想做的是将这些审计调用写入一个单独的审计日志文件。我尝试使用logback实现这个,并借助thisstackoverflowquestion中的第二个答案我终于设法做到了。第一个回复,即禁用系统日志记录,没有用。然而,虽然此解决方案成功地将我的审计跟踪写入一个单独的文件,但所有其他日志记录都停止写入其默认文件并且仅输出到控制台。我想要实现的是将所有常规日志记录写入常规文件(即server.log),因为它

java - log4j:WARN 在 org.apache.log4j.DailyRollingFileAppender 中没有这样的属性 [maxFileSize]

一切正常。但是显示这个错误。我的log4j.properties文件如下:#Rootloggeroptionlog4j.rootLogger=DEBUG,stdout,file#Redirectlogmessagestoconsolelog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layou

java - 如何修复 Veracode CWE 117(日志输出中和不当)

有一个Spring全局@ExceptionHandler(Exception.class)方法可以像这样记录异常:@ExceptionHandler(Exception.class)voidhandleException(Exceptionex){logger.error("Simpleerrormessage",ex);...Veracode扫描表明此日志记录有不正确的日志输出中和,并建议使用ESAPI记录器。有没有办法在不将记录器更改为ESAPI的情况下修复此漏洞?这是我遇到此问题的代码中唯一的地方,我试图弄清楚如何以最少的更改修复它。也许ESAPI有一些我没有注意到的方法?附言当

java - 我如何让 google guice 注入(inject)自定义记录器,比如 commons-logging 或 log4j 记录器

Googleguice有一个built-inloggerbinding.但是,如果我想使用commons-logging或log4j记录器怎么办?我可以得到guice来注入(inject)由创建的日志吗LogFactory.getLog(CLASS.class)但具有与内置绑定(bind)相同的行为:Thebindingautomaticallysetsthelogger'snametothenameoftheclassintowhichtheLoggerisbeinginjected..它甚至有意义吗?或者喊我只是使用内置的javaLogger?或者只使用没有注入(inject)的c

java - 如何在测试时设置 Spring 日志记录级别?

这个问题在这里已经有了答案:SpringBootUnitTestignoreslogging.level(6个答案)关闭5年前。我的SpringBoot测试堆栈是Maven+Surefire+JUnit4。我正在使用@RunWith(SpringJUnit4ClassRunner.class)注释测试。我的项目根目录中有application.properties,其中包含以下行:logging.level.root=INFO这在运行Springboot应用程序时控制日志记录,并且它在正常运行时工作。但是,每当我运行任何JUnit4测试时,我都会被这样的DEBUG输出页面所困扰:...

java - 带微秒的 log4j ConversionPattern 时间戳

我想在使用log4j生成的日志文件的每个条目的时间戳中添加微秒,这可能吗?我在官方文档中搜索过,但没有提到毫秒以下的单位。现在我有一个像下面这样的转换模式:%d{dd/MM/yyyyHH\:mm\:ss,SSS}%-5p[%t]-%m%n在日期转换模式(%d)中,我想在毫秒值(SSS)之后添加微秒,有没有办法去做吧? 最佳答案 从Java9和log4j2.11.0开始,即使是纳秒级也可以获取时间戳。以下是特殊的预定义模式,允许获取日期时间或微秒或纳秒时间:模式:%d{ABSOLUTE_MICROS}输出示例:14:34:02,123

java - 带有 log4j 的 Jersey LoggingFilter

我有一个用jersey开发的休息服务,我有一个ContainerRequestFilters用于打印请求,如下所示:com.sun.jersey.spi.container.ContainerRequestFilterscom.sun.jersey.api.container.filter.LoggingFilter并且我在使用log4j的post方法中有记录器。但是LoggingFilter打印的日志与log4j不同。LogginFilter有什么方法可以使用log4j的配置吗?我在log4j.xml文件中试过这个:但它不起作用:( 最佳答案

java - Dropwizard 不会将自定义记录器记录到文件中

我有一个dropwizard应用程序,我在其中将记录器附加程序配置为文件如下:logging:level:INFOloggers:"mylogger":INFO"com.path.to.class":INFOappenders:-type:filecurrentLogFilename:.logs/mylogs.logarchivedLogFilenamePattern:.logs/archive.%d.log.gzarchivedFileCount:14并且,在我的应用中创建了记录器:importorg.slf4j.Logger;importorg.slf4j.LoggerFactor

java - nginx:使用nginx作为反向代理时是否可以在访问日志中捕获响应头?

我们使用nginx作为反向代理来控制和记录对Clojure(Java)网络服务应用程序的访问。我们能够生成access_log并使用nginx捕获传入的header。我们的Clojure应用程序通过log4j记录Activity。问题是,我们无法将access_log中的条目与应用程序生成的条目相匹配。应用程序通过发送响应header和正文来响应访问。我们可以自由更改这些响应header。我最初的想法是生成一个对应于每个Web服务请求的UUID,并在回复headerX-Uuid中将其发回给用户。我的想法是,我可以通过创建自定义log_format来捕获此响应:log_formatlt-

java - 我怎么知道谁调用了 System.gc()?

在一个正在运行的系统中,我们看到很多“FullGC(System)”,这表明有人触发了System.gc()。有没有办法找出代码中发生这种情况的位置?我确实搜索了所有可用的源,但没有发现任何可疑的东西,所以它一定在某个地方,可能是在同一个容器中运行的另一个应用程序或容器本身。 最佳答案 您可以更改运行时类以记录在文件中调用gc()的位置(System.gc()调用Runtime.gc())为此,编辑一个副本,编译它并将其添加到您的-Xbootclasspath/p:然而,大量的FullGC更有可能是由于幸存者空间不足或完全永久空间造