首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Log4J - 在对LogManager.getLogger()的调用中显式指定类名是否有任何意义?

Log4j 是一种基于Java的日志记录工具,它允许开发人员在应用程序中记录日志信息。Log4j 1.x版本存在一个漏洞,即LogManager.getLogger()方法在调用过程中显式指定类名没有意义。这是因为Log4j 1.x版本中的LogManager.getLogger()方法返回的是一个Logger对象,而不是一个Log4j Logger对象。因此,在调用LogManager.getLogger()方法时,如果未指定类名,则返回的是默认的Logger对象,而不是Log4j Logger对象。

为了解决这个问题,可以使用Log4j 2.x版本来替换Log4j 1.x版本。Log4j 2.x版本中的LogManager.getLogger()方法返回的是一个Log4j Logger对象,而不是一个Logger对象。因此,在调用LogManager.getLogger()方法时,如果未指定类名,则返回的是默认的Log4j Logger对象,而不是默认的Logger对象。

此外,Log4j 2.x版本还提供了一些其他的安全特性,例如禁用远程日志记录、使用基于角色的访问控制、限制日志消息的输出位置等,以帮助开发人员保护应用程序的安全性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《手把手教你》系列基础篇(八十七)-java+ selenium自动化测试-框架设计基础-Log4j 2实现日志输出-上篇(详解教程)

通过在子节点中加入进行日志布局 %c 输出所属全名,可写为 %c{Num} ,Num输出范围 如:"com.sun.aaa.classB...",%C{2}将使日志输出输出范围为:aaa.classB%d 输出日志时间其格式为 可指定格式 如 %d{HH:mm:ss}等%l 输出日志事件发生位置,包括类目、发生线程,在代码行数%n 换行符...5.日志级别 我们现在要调用logger方法,不过在这个Logger对象很多方法,所以要先了解log4j日志级别,log4j规定了默认几个级别:trace<debug<info<warn<...= LogManager.getLogger(MyApp.class.getName()); 这里getLogger一个参数指定是这个logger名称,这个名称在配置文件里面可是需要,这个待会儿再说...7.2代码设计 1.在这里宏哥随便写个测试调用就是这么简单,log4j核心在配置文件上。如下图所示: 2.如果没有自定义配置文件,上面这个在写一个main方法,调用测试方法。

36330

log4j2使用_logback log4j

接口用于定制规范,可以多个实现,使用时是面向接口(导入包都是slf4j包而不是具体某个日志框架包),即直接和接口交互,不直接使用实现,所以可以任意更换实现而不用更改代码日志相关代码。...比如:slf4j定义了一套日志接口,项目中使用日志框架是logback,开发调用所有接口都是slf4j,不直接使用logback,调用是 自己工程调用slf4j接口,slf4j接口去调用logback...jar并没有引入任何配置文件,在测试时候可以看到ERROR输出:“ERROR StatusLogger No log4j2 configuration file found....是Cloudera提供一个高可用,高可靠,分布海量日志采集、聚合和传输系统,Flume支持在日志系统定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方...: %F 输出所在文件,如Log4j2Test.java %L 输出行号 %M 输出所在方法名 %l 输出语句所在行数, 包括、方法名、文件、行数 Loggers:日志器 日志器分根日志器

41930
  • 细说log4jlog4j 1.x

    Logger可以指定级别,可选日志级别包括:TRACE, DEBUG, INFO, WARN, ERROR,FATAL,这些日志级别在org.apache.log4j.Level定义。...log4j日志级别是有序,他们顺序关系是:TRACE < DEBUG < INFO < WARN < ERROR < FATAL。 而且,只能是低级别的日志可以记录高级别的日志。...定义了日志输出目的地,log4j允许将日志输出到任何目的地(且可以同时将日志消息输出到多个目的地,及配置多个appender)。...,可以根据指定大小将系统日志切割为多个文件 Layout则用于格式化日志消息,常用日志输出格式:%d,%p,%t,%c,%m,%n。...log4j配置 log4j 1.x配置可以2种方式: (1)编程方式进行配置,不推荐。

    72720

    log4j2 JNDI 注入漏洞分析

    ,首先翻阅官方文档关于lookup说明: lookup提供了一种在任意位置向 Log4j2 配置添加值方法,是实现StrLookup接口特殊类型插件 ,查看官方文档发现log4j2 支持方法很多...log4j jdni 用法格式如下: ${jndi:JNDIContent} 既然明确了lookup是触发漏洞点,并且找到了可以触发 lookup方法 ,那么就可以找入口点,只要找到入口点...没错了,就是LogManager.getLogger().xxxx()方法 在log4j2,共有8 个日志级别,可以通过LogManager.getLogger()调用记录日志方法如下: LogManager.getLogger...查看 error 继承关系可以发现,实际上会调用AbstractLogger.javapublic void error()方法: 在该方法中会调用logIfEnabled判断是否符合日志记录等级要求...虽然个别厂商提前修复,但同样说明了一件事,供应链级别的0day攻击,依旧是无法第一时间防御是否存在一种新机制或方案能够防御供应链级别的0day攻击?

    1K40

    Log4j2-Log4j 2介绍及使用

    优点是这意味着它们可以用于任何Appender,而不仅仅是写入到OutputStream那些。...应用程序要使用Log4j 2API,需要从LogManager获取一个明确名称Logger。 LogManager将会定位到一个合适LoggerContext并且从中获取Logger。...在表格,垂直列为LogEvent级别,水平列为从合适LoggerConfig中分配到级别。二者交点处标识了LogEvent是否会被通过并传递给下一步处理,是(YES)或否(NO)。...---- Filter Log4j提供Filter并可应用于:控制被传递到任何LoggerConfig之前、控制被传递到达一个LoggerConfig但在调用任何Appender之前、控制被传递到一个LoggerConfig...单在调用一个指定Appender和每一个Appender之前。

    73520

    Log4j2 简单使用

    日志是一个系统经常用到功能,我们可以在调试时候依靠日志查看输出,在程序运行时候通过查看日志判断程序运行状态。在Java世界一个非常著名日志库——Log4j。...%msg 日志信息,也就是我们传入信息。 %n 换行。 %F 输出所在文件。 %L 输出行号。 %M 输出所在方法名。 %l 输出语句所在位置信息,包括文件、方法名、行号。...首先我们来添加一个新Logger,来记录所有信息,这个Logger名称就叫做TRACE_ALL吧。这个Logger两个属性,level指定记录级别,additivity指定传递性。...在调用getLogger时候指定要使用哪一个Logger。...在Appenders节点下新建一个File节点,name和fileName属性分别指定Appender名称和目的文件。然后我们指定TRACE_ALL Logger同时将日志输出到控制台和文件。 <?

    29010

    【漏洞复现】Apache Log4j 漏洞利用分析

    log4j jdni 用法格式如下: ${jndi:JNDIContent} 既然明确了lookup是触发漏洞点,并且找到了可以触发 lookup方法 ,那么就可以找入口点,只要找到入口点,然后传入...jndi 调用 ldap 方式,就能够实现 RCE。...没错了,就是LogManager.getLogger().xxxx()方法 在log4j2,共有8 个日志级别,可以通过LogManager.getLogger()调用记录日志方法如下: LogManager.getLogger...查看 error 继承关系可以发现,实际上会调用AbstractLogger.javapublic void error()方法: 因为在logIfEnabled方法,对当前日志等级进行了一次判断..., jndi, main, jvmrunargs, sys, env, log4j} 在Interpolator.lookup方法,首先会获取字符串前缀值: 如果匹配到内置方法,那么就进入对应处理方法

    23410

    slf4j中有典型适配器模式,不看一看?

    ,在实现slf4jLogger方法时,调用log4jLogger对应实现。...slf4j具体实现 关于适配器模式实现并不是在slf4j-core(只定义了Logger),而具体实现是在针对log4j桥接器项目slf4j-log4j12。...重点方法是handleNormalizedLoggingCall方法,在其中调用Log4j对应log方法。...缺省适配器模式 当不需要全部实现接口提供方法时,可以设计一个适配器抽象实现接口,并为接口中每个方法提供默认方法,抽象子类就可以选择覆盖父某些方法实现需求,适用于一个接口不想使用所有的方法情况...:slf4j适配,不仅可以实现log4j功能,还可以添加slf4j自身功能,很容易达到扩展; 解耦性:通过适配器,目标接口和适配者达到了解耦效果,对适配者来说并不需要修改任何代码。

    74620

    springboot整合篇-springboot整合log4j2

    # log4j2简介 log4j2设计之初是为了审计,log4j2是log4j 1.x 升级版,参考了logback一些优秀设计,并且修复了一些问题,因此带来了一些重大提升。...log4j2相比log4j和logback很大性能替身。 log4j2能够自动重载配置,log4j2通过参数配置,可以不用重启应用而自动重新加载log4j2配置文件。...-- 配置日志文件输出目录,此配置将日志输出到tomcat根目录下指定文件夹 --> ....%m : 日志内容,即 logger.info("message") %n : 换行符 %C : Java %L : 日志输出所在行数...-- TRACE级别日志 ; 设置日志格式并配置日志压缩格式,压缩文件独立放在一个文件夹内, 日期格式不能为冒号,否则无法生成,因为文件不允许冒号,此appender只输出trace级别的数据到trace.log

    62821

    细说log4j

    Log4j,其语法和用法与在Java程序中一样,使得多语言分布系统得到一个统一一致日志组件模块。   ...Append=false:默认值是true,     即将消息增加到指定文件,     false指将消息覆盖指定文件内容。   ...log信息耗费毫秒数     %c 输出所属类目,通常就是所在全名     %t 输出产生该日志事件线程     %n 输出一个回车换行符,Windows平台为"\r\n”,Unix...22:10:28,921   %l 输出日志事件发生位置,       包括类目、发生线程,以及在代码行数。     ...2)指定 appender 是否需要 layout。这个由requiresLayout()方法确定。   3)如果某些属性必须同时激活,则应该在 activateOptions() 方法内完成。

    1.6K50

    给,你们要高性能日志记录工具 Log4j 2

    性能方面是 Log4j 2 最大亮点,至于其他方面的一些优势,比如说下面这些,可以忽略不计,文字多短就代表它有多不重要。 2)Log4j 2 可以减少垃圾收集器压力。...你会在 ConfigurationFactory 搜到这段话。...%F 输出所在文件,如 Demo.java %L 输出行号 %M 输出所在方法名 %l 输出语句所在行数, 包括、方法名、文件、行数 %p 输出日志级别 %c 输出包,如果后面跟...结合日志文件,再来看 RollingFile 配置,就很容易理解了。 1)fileName 用来指定文件。 2)filePattern 用来指定文件模式,它取决于过渡策略。...由于配置文件没有指定过渡策略,因此 RollingFile 会启用默认 DefaultRolloverStrategy。

    47820

    Java 实现日志文件大小限制及管理——以 Python Logging 为启示

    我是一后端开发爱好者,工作日常接触到最多就是Java语言啦,所以我都尽量抽业余时间把自己所学到所会,通过文章形式进行输出,希望以这种方式帮助到更多初学者或者想入门小伙伴们,同时也能对自己技术进行沉淀...功能,比如 Log4j RollingFileAppender、Logback SizeBasedTriggeringPolicy。...Python Logging 模块文件大小限制在 Python ,RotatingFileHandler 是用于日志文件大小限制核心。...分布系统日志收集:通过限制日志文件大小,确保日志数据量可控,便于集中收集和分析。长期运行应用程序:对长期运行应用程序进行日志文件大小限制,确保日志管理长期稳定。...程序使用 Log4j 2 日志框架记录了一万条调试消息。下面是这段代码详细解读:import 语句:导入了Apache Log4j 2 日志框架 LogManager 和 Logger

    7721

    浅析Log4j2Rce

    Log4j? 简单点,就是一个拿来打印日志库,Log4j2是Log4j超级增强版。...格式化字符串我们可以看到有如%d,%t等一系列占位符,这些占位符意义是用于标识转换器,表示当前位置字符串应该由何种转换器处理。...(重点)去判断msg信息是否存在字符串“{”,如果存在就会把及后面的字符串切割出来存放到变量value,于132行将其作为参数传入replace方法最终传入到InitialContext.lookup...参数,完成jndi注入 总结 在log4j2如果触发了error级别以上事件,log4j2会调用不同转换器去分析事件用于格式化输出日志,在MessagePatternConverter这个转换器中会去获取事件...,可以通过移除JndiLookup方式。

    1.1K20

    JAVA 应用日志最佳实践

    日志基本格式 基本日志格式需要输出:时间、级别、线程名称、logger 名称、日志内容。如果能拿到调用链 ID 的话,输出到日志对问题定位帮助很大。...一个通常只使用一个 Logger 对象,Logger 应该是 private static final 。...Logback / Log4j / Log4j2 additivity 属性设为 false 通过 additivity 属性可以控制子 Logger 是否继承父 Logger appender...没有限制日志输出,会带来无畏性能和资源浪费,严重会导致 OOM,应用直接崩溃。 查询接口不要将查询出来数据全部打印,存在 DB 数据,查询出来后再打印一遍意义不带还消耗资源。...(Level.DEBUG); // Example 2: 设置 Log4j2 日志级别 Logger logger4j = LogManager.getLogger("需要设置级别的 logger

    3.2K4736

    Java日志体系框架总结:JUL、JCL、SLF4J、Log4j、Logback、Log4j2

    从pom文件看,两者没有什么关系,独立维护两个项目,拥有不同GAV;但是通过JD-GUI等工具初步分析,JAR包里和数量)一模一样,不过源码包括内部类还是很多差别的。...因此,只要引入Log4j并在classpath配置log4j.xml,则commons-logging就会使用Log4j,而Java代码里无需添加任何Log4j代码。...任何一种基于SLF4J实现都要有一个这个。如果有任意两个实现SLF4J包同时出现,可能会出现问题。...Log4j由三个重要组成构成: Loggers:日志记录器,控制要输出哪些日志记录语句,对日志信息进行级别限制 Appenders:输出端,指定日志将打印到控制台还是文件 Layout:日志格式化器...除内部设计调整外,以下几点大升级: 更简化配置 更强大参数格式化 夸张异步性能 Log4j2,分为API(log4j-api)和实现(log4j-core)两个模块,log4j-core包含

    10410

    【C++修行之道】和对象(二)6个默认成员函数、构造函数、析构函数

    真的什么都没有吗?并不是,任何在什么都不写时,编译器会自动生成以下6个默认成员函数。 默认成员函数:用户没有实现,编译器会自动生成(半自动化)成员函数称为默认成员函数。...C2512: “Date”: 没有合适默认构造函数可用 Date d1; return 0; } 在这个Date定义,并没有定义任何构造函数。...3.2 特性 析构函数是特殊成员函数,其特征如下: 析构函数名是在前加上字符 ~。 无参数无返回值类型。 一个只能有一个析构函数。若未定义,系统会自动生成默认析构函数。...但是:main函数不能直接调用Time析构函数,实际要释放是Date对象,所以编译器会调用Date析构函数,而Date没有提供,则编译器会给Date生成一个默认析构函数。...目的是:在其内部调用Time析构函数,即当Date对象销毁时,要保证其内部每个自定义对象都可以正确销毁,main函数并没有直接调用Time析构函数,而是调用编译器为Date生成默认析构函数

    15410

    打印日志竟然只晓得 Log4j

    竟然小伙伴不知道“打日志”是什么意思,不知道该怎么学习,还有小伙伴回答说,只知道 Log4j那么一刻,我遭受到了一万点暴击,内心莫名伤感,犹如一匹垂头丧气狗。...:包含日志产生时间、线程、类别等等信息 自定义格式参数如下所示: %m:输出代码中指定消息 %p:输出优先级 %r:输出应用启动到输出该日志信息时花费毫秒数 %c:输出所在全名 %t:输出该日志所在线程...%n:输出一个回车换行符 %d:输出日志时间点 %l:输出日志发生位置,包括、线程、方法名、代码行数,比如:method:com.itwanger.Log4jDemo.main(Log4jDemo.java...通常格式如下所示: private static final Logger logger = LogManager.getLogger(Log4jDemo.class); 2)打印日志 了 Logger...5)不要忘记在打印日志时候带上全名和线程,在多线程环境下,这点尤为重要,否则定位问题时候就太难了。

    34720

    JAVA基础(11) 系统日志

    这五个级别是顺序,DEBUG<INFO<WARN<ERROR<FATAL,分别用来指定这条日志信息重要程度,明白这一点很重要,这里Log4j一个规则:假设Loggers级别为P,如果在Loggers...在对Logger实例进行命名时,没有限制,可以取任意自己感兴趣名字。一般情况下建议以所在位置来命名Logger实例,这是目前来讲比较有效Logger命名方式。...log4j.properties配置文件 通常,我们都提供一个名为log4j.properties文件,在第一次调用Log4J时,Log4J会在路径(...../web-inf/class/当然也可以放到其它任何目录,只要该目录被包含到路径即可)定位这个文件,并读入这个文件完成配置。...2002年10月18日 22 : 10 : 28 , 921    %l 输出日志事件发生位置,包括类目、发生线程,以及在代码行数。

    50720
    领券