草庐IT

java - log4j2 与 Java 11 兼容吗?

我尝试在最新的Java11上运行我的项目。一切正常,除了特定的文件记录器。日志记录在以前的Java版本(10、9、8)上工作正常,但在Java11上不行。在服务器运行期间,我只看到1个警告:WARNING:sun.reflect.Reflection.getCallerClassisnotsupported.Thiswillimpactperformance.这是我的配置:%d{HH:mm:ss.SSS}-%msg%n%d{HH:mm:ss.SSS}-%msg%n%msg%n%d{HH:mm:ss.SSS}%-5level-%msg%n所有记录器,除了userLog工作正常。但是,us

Log4j2远程代码执行漏洞复现(cve-2021-44228)

Log4j2远程代码执行漏洞(cve-2021-44228)复现笔记内容前言Apachelog4j是Apache的一个开源项目,Apachelog4j2是一个就Java的日志记录工具。通过重写了log4j框架,并且引入了大量丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI组建等,被应用于业务系统开发,用于记录程序输入输出日志信息。log4j2中存在JNDI注入漏洞,当程序记录用户输入的数据时,即可触发该漏洞。成功利用该漏洞可在目标服务器上执行任意代码。JNDI简单介绍JNDI(JavaNamingandDirectoryInterface,Java命名和目录接口)是SUN公司提供

java - 按需重新加载 log4j2 配置

我将log4j2.xml配置文件设置为每30秒检查一次:...是否可以通过编程方式告诉log4j2检查配置更改而不是超时?注意我不想以编程方式加载指定配置文件的配置,我只想告诉log4j2检查之前加载的配置文件,就好像monitorInterval已过期一样。谢谢! 最佳答案 看来我找到了解决方案:((org.apache.logging.log4j.core.LoggerContext)LogManager.getContext(false)).reconfigure();有没有人发现这有什么问题/副作用?

java - 如果我们将它与 slf4j api 一起使用,我们是否可以使用 log4j2 的所有功能?

我们已经将所有代码迁移到使用slf4API以使用通用API,但是现在我们正在考虑从log4j1.x升级到log4j2.x。如果我们使用slf4jAPI和log4j2作为实现,我们是否能够使用log4j2的所有功能? 最佳答案 Log4j2API比SLF4JAPI更丰富,许多Log4j2API功能不能通过SLF4J访问。详情请见下文。Log4j2实现的功能,如异步记录器、查找、过滤器、布局和附加器,都是通过配置控制的,并且无论您在应用程序中使用何种日志记录API都可用。另请参阅此answer为什么使用Log4j2API编程是安全的这个

java - Log4J2 - 如何禁用单元测试中的日志记录?

我在我的应用程序中使用Log4Jv2.0Beta3进行日志记录,并且在我运行单元测试时生成了日志消息。我检查了API以某种方式将日志级别设置为CRITICAL之类的级别,但我找不到任何更改记录器配置的方式。事实上,我在log4j2网站上看到了这个:NotethatunlikeLog4j1.x,thepublicLog4j2APIdoesnotexposemethodstoadd,modifyorremoveappendersandfiltersormanipulatetheconfigurationinanyway.所以说。从单元测试中禁用日志记录的正确方法是什么?

java - Guava @VisibleForTesting : Help me with a complete example

我的目的是对私有(private)方法进行单元测试,我了解如何导入@VisibleForTesting并将其用于私有(private)方法。我进行了大量搜索,但无法找到演示此功能的完整示例。例如:classMyClass{@VisibleForTestingprivatedouble[]getWorkArray(double[]values,intlength){::return}}现在在JUnit中,我一定能做到@TestpublicvoidtestProvateMethod(){MyClassobject=newMyClass();assertNotNull(object.getW

java - 如何在运行时使用 log4j2 api 将日志级别从 INFO 设置为 ERROR?

logger.setLevel()方法在log4j2API中不可用。那么如何在运行时设置日志级别。 最佳答案 我不确定这是否是最好的方法,但您可以在org.apache.logging.log4j.core.config.LoggerConfig上设置级别,您可以通过日志管理器。设置后,您可以使用新配置更新记录器。举个例子:publicstaticvoidmain(String[]args){Loggerlog=LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);log.error("

python - 使用 Python 写入文件 -- '' 虽然未完成 :"Confusing Me

我只有不到一年的编程经验。在学习读写文件时,我遇到了这个教程:http://www.penzilla.net/tutorials/python/fileio/本教程提供了以下示例作为创建和写入文件的简单脚本:#Let'screateafileandwriteittodisk.filename="test.dat"#Let'screatesomedata:done=0namelist=[]whilenotdone:name=raw_input("Enteraname:")iftype(name)==type(""):namelist.append(name)else:break#Crea

python - 在 python : deep vs shallow copy: gotcha for me in python? 中复制列表

所以这就是我尝试做的。vectorized=[0]*lengthfori,keyinenumerate(foo_dict.keys()):vector=vectorizedvector[i]=1printvectorvector=vectorizedprintvectorized所以我希望的是例如长度是4。所以我创建一个4维向量:vectorized=[0,0,0,0]现在,取决于字典的索引(在这种情况下长度也是4)创建一个值为1的向量,其余值为零sovector=[1,0,0,0],[0,1,0,0]andsoon..现在发生的事情是:vector=[1,0,0,0],[1,1,0,

python - Flask、Python 和 Socket.io : multithreading app is giving me "RuntimeError: working outside of request context"

我一直在使用Flask、Python和Flask-Socket.io库开发应用程序。我遇到的问题是,由于某些上下文问题,以下代码将无法正确执行emitRuntimeError:workingoutsideofrequestcontext我现在只为整个程序编写一个python文件。这是我的代码(test.py):fromthreadingimportThreadfromflaskimportFlask,render_template,session,request,jsonify,current_app,copy_current_request_contextfromflask.ext.