关于apache log4j的一些详细参考

《漏洞研究》Apache Log4j2 远程代码执行漏洞 Apache Log4j2 组件存在远程代码执行漏洞(CVE-2021-44228),该漏洞是由于 Apache Log4j2 某些功能存在递归解析功能,未经身份验证的攻击者通过发送特定恶意数据包,可在目标服务器上执行任意代码。 阅读详情

Log4j的简单配置使用!
Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。

1、定义配置文件 

其实您也可以完全不使用配置文件,而是在代码中配置Log4j环境。但是,使用配置文件将使您的应用程序更加灵活。 

Log4j支持两种配置文件格式,一种是Java特性文件(键=值),一种是XML格式的文件。下面我们介绍使用Log4j配置文件的方法: 

配置根Logger,其语法为: 

log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。 

appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。 

配置日志信息输出目的地Appender,其语法为 

log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.optionN = valueN
其中,Log4j提供的appender有以下几种:

org.apache.log4j.ConsoleAppender(控制台)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件)
org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)
org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
配置日志信息的格式(布局),其语法为: 

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
其中,Log4j提供的layout有以下几种:

org.apache.log4j.HTMLLayout(以HTML表格形式布局)
org.apache.log4j.PatternLayout(可以灵活地指定布局模式)
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
2、在代码中使用Log4j 

下面将讲述在程序代码中怎样使用Log4j。

i、得到记录器 使用Log4j,第一步就是获取日志记录器,这个记录器将负责控制日志信息。其语法为: public static Logger getLogger( String name),通过指定的名字获得记录器,如果必要的话,则为这个名字创建一个新的记录器。Name一般取本类的名字,比如: static Logger logger = Logger.getLogger ( ServerWithLog4j.class.getName () ) ; 

ii、读取配置文件当获得了日志记录器之后,第二步将配置Log4j环境,其语法为: BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。 PropertyConfigurator.configure ( String configFilename) :读取使用Java的特性文件编写的配置文件。 DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。 

iii、插入记录信息(格式化日志信息)当上两个必要步骤执行完毕,您就可以轻松地使用不同优先级别的日志记录语句插入到您想记录日志的任何地方,其语法如下:

Logger.debug ( Object message ) ;
Logger.info ( Object message ) ;
Logger.warn ( Object message ) ;
Logger.error ( Object message ) ;
iv、代码例子注释:蓝色 – 文件名 红色 – 用到log4j的地方

Hello.java

import org.apache.log4j.*;
 
public class Hello {
   static Logger logger = Logger.getLogger(Hello.class);
 
   public static void main(String argv[]) {
      PropertyConfigurator.configure("Hello.properties");
      logger.debug("Hello world.");
      logger.info("What a beatiful day.");
 
      try {
         // 假如这里出现了异常
      throw new NullPointerException();
      } catch (Exception e) {
         logger.warn("NullPointerException", e);  
      }
  }
} 
log4j.properties

log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
 
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
 
#log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
 
# Keep one backup file
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
log4j.xml


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
      <!--==============================================-->
      <!--                                              -->
      <!--           rolling file Appender                      -->
      <!--==============================================-->
 
      <appender name="B1" class="org.apache.log4j.RollingFileAppender">
            <param name="File" value="log.htm" />
            <param name="Append" value="false" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t] %p -%m%n" />
 
            </layout>
      </appender>
      <!--==============================================-->
      <!--                                              -->
      <!--           console Appender                          -->
      <!--==============================================-->
      <appender name="A1" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t] %p - %m%n" />
            </layout>
      </appender>
      <!-- define root-->
      <root>
            <level value="INFO" />
            <appender-ref ref="A1" />            <appender-ref ref="B1" />
      </root>
</log4j:configuration>

多智能体强化学习之值函数分解:VDN、QMIX、QTRAN系列优缺点分析(转载) 关于多智能体强化学习中VDN,QMIX,QTRAN三个算法再值分解方向的研究成果。三个算法呈递进关系 阅读详情

相关推荐

用矿卡P104-100在PVE 8.0.4上跑Ollama:保姆级显卡直通与驱动安装避坑指南

本文详细介绍了如何在PVE 8.0.4环境下通过显卡直通技术,利用矿卡P104-100高效部署本地大模型Ollama的全流程。从硬件配置、BIOS设置到驱动安装和性能调优,提供了保姆级的避坑指南和实战解决方案,特别针对矿卡无显示输出的特殊性进行了优化。

weixin_33228769的博客 752

Apache log4j漏洞总结

Apache log4j漏洞总结包括CVE-2017-5645(Log4j反序列化漏洞)和CVE-2021-44228(Log4j 2远程代码执行漏洞)

星落的博客 3762

SiC双向车载充电器技术解析与V2G应用

碳化硅(SiC)功率器件凭借其高击穿电场强度、优异热导率和低开关损耗特性,正在重塑电力电子系统的设计边界。作为第三代半导体材料的代表,SiC MOSFET通过降低80%的开关损耗,使车载充电器(OBC)效率突破96.5%。在双向能量转换架构中,图腾柱PFC与CLLC谐振变换器的组合实现了ZVS软开关,配合三维集成散热方案使功率密度达54W/in³。这些技术进步直接支撑了V2G(车辆到电网)应用场景,使电动车成为虚拟电厂(VPP)的关键单元。通过智能充放电策略优化,电池循环寿命可提升至4000次以上,为电力市

weixin_30693683的博客 275

Apache Log4j2 漏洞原理

Apache Log4j被发现存在一处任意代码执行漏洞,由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。经验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等众多组件与大型应用均受影响。

m0_49025459的博客 2309

Win11上WSL2安装Ubuntu22.04避坑指南:从镜像源到C++环境配置

本文详细介绍了在Win11系统上安装和配置WSL2及Ubuntu22.04开发环境的完整流程与避坑指南。内容涵盖从解决网络安装错误、更换国内镜像源以加速软件更新,到一站式配置C++开发工具链(包括GCC、GDB、CMake等),并提供了提升WSL2使用体验的实用技巧和故障排除方法,帮助开发者高效搭建稳定的Linux开发环境。

weixin_29306261的博客 474

AutoLISP 学习 (一)

AutoLISP基本语法结构、语法 以括号组成表达式,左右括号一定要成对,单、双引号也要成对,例如: (defun c:hello() (princ "\nHello world!") (prin1) ) 表达式格式:(函数名 操作数 操作数 …),例如: (setq p1 (list 0 0)) (setq p2 (list 10 10)) (setq p3 (list 20 20)) ;;; CAD中画直线,经过p1 p2 p3 (command "LINE" p1 p2 p3 ""

m0_54575622的博客 2122

Apache Log4j2漏洞 (CVE-2021-44228) 分析与复现

Apache Log4j2 是一个开源的 Java 日志记录工具。Log4j2 是 Log4j 的升级版本,其优异的性能被广泛的应用于各种常见的 Web 服务中。Log4j2 在特定的版本中由于启用了 lookup 功能,导致存在 JNDI 漏洞。lookup 函数是用于在日志消息中替换变量的函数,是通过配置文件中的${}语法调用的,例如:如果在日志消息中使用了,那么 log4j2 将使用 lookup 函数从系统属性中查找名为 “my.property” 的属性值,并将其替换为实际值。

未完成的歌~的博客 2万+

51单片机矩阵键盘——LCD1602显示

矩阵键盘扫描(输入扫描) 原理:读取第1行(列)→读取第2行(列) →读取第3行(列) → ……,然后快速循环这个过程,最终实现所有按键同时检测的效果 在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式采用逐行或逐列的“扫描”,就可以读出任何位置按键的状态。

YLG_lin的博客 9853

Apache Log4j2 详解 (一)

log4j2 是一个优秀的日志框架,和他对应的其他的日志框架例如logback;之前的版本是log4j 1.x 这个是升级版。我们一般都是搭配slf4j使用1.1 日志框架和日志输出接口的关系日志输出接口,通常我们也叫他日志门面,现在Java中认可度最高的日志门面就是 slf4j (Simple logging facade for Java)slf4j 和 log4j2 有什么关系呢。

BASK2311的博客 2607

【异常】出现“‘git‘ 不是内部或外部命令,也不是可运行的程序”的错误

出现“‘git’ 不是内部或外部命令,也不是可运行的程序”的错误通常意味着 Git 没有被正确安装在你的系统上,或者其可执行文件的路径没有被添加到系统的环境变量中。

奶爸的编程之路,也就一周冷个三天 1389

AI 辅助编程全景:演进、提效场景与未来趋势

本文系统梳理了AI辅助编程的发展历程与应用场景。演进路径分为三代:从代码补全工具(2023)、对话式助手(2024)到自主编程代理(2025)。在软件全生命周期中,AI可显著提升各环节效率:需求分析阶段节省30-60%文档编写时间;设计阶段缩短40-60%技术调研周期;编码阶段通过智能补全提升55%任务速度;测试阶段减少30-60%测试编写时间。数据显示,2025年84%开发者使用AI工具,41%代码由AI生成,平均每周节省3.6小时。AI正推动开发者角色从编写者转变为审核者,但复杂业务逻辑和架构设计仍需人

甘蓝的专栏 472

jsonlayout log4j2 时间问题_探索Java日志的奥秘:底层日志系统-log4j2

前言log4j2是apache在log4j的基础上,参考logback架构实现的一套新的日志系统(我感觉是apache害怕logback了)。log4j2的官方文档上写着一些它的优点:在拥有全部logback特性的情况下,还修复了一些隐藏问题API 分离:现在log4j2也是门面模式使用日志,默认的日志实现是log4j2,当然你也可以用logback(应该没有人会这么做)性能提升:log4j2包含...

weixin_39618176的博客 277

yolo 图像检测、关键点检测单摄像头测量物体尺寸长度大小

new_distance/real_size (待求物体像素距离与实际距离比值)= distance / metric_length (参照物像素距离与实际距离比值)然后运行size_demo进行要测量的物体进行关节点检测距离;metric_length是上面耳机选取的两个点的实际物理距离,大概6cm;这里用的windows。通过关键点检测识别物体关键点的像素距离,然后参考比例尺计算实际距离。2)关键点算法这里用的现有的进行测试,实际场景需要自己训练。这里拿这模型推理出的关键点坐标进行后续长度计算。

weixin_42357472的博客 2525

Apache Log4j 漏洞(JNDI注入 CVE-2021-44228)

影响范围 2.0 <= Apache log4j <= 2.14.1 利用 import org.apache.log4j.Logger; import java.io.*; import java.sql.SQLException; import java.util.*; public class VulnerableLog4jExampleHandler implements HttpHandler { static Logger log = Logger.getLogger(l

小龙在线 3万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

java logger使用_探索Java日志的奥秘:底层日志系统-log4j2

前言log4j2是apache在log4j的基础上,参考logback架构实现的一套新的日志系统(我感觉是apache害怕logback了)。log4j2的官方文档上写着一些它的优点:在拥有全部logback特性的情况下,还修复了一些隐藏问题API 分离:现在log4j2也是门面模式使用日志,默认的日志实现是log4j2,当然你也可以用logback(应该没有人会这么做)性能提升:log4j2包含...

weixin_39602560的博客 157

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Log4j2基本使用及配置样例

目录下就行,当然不一定非得是这个目录,我这里只是给个可以的。这里为了使用注解,结合lombok来使用。

on the way . . . 2882

java.lang.ClassNotFoundException: org.apache.log4j.Logger 异常

java.lang.ClassNotFoundException: org.apache.log4j.Logger 异常

10年职场两茫茫,35岁凄凉奈若何 832

java log4j2_老生常谈Log4j和Log4j2的区别(推荐)

相信很多程序猿朋友对log4j都很熟悉,log4j可以说是陪伴了绝大多数的朋友开启的编程。我不知道log4j之前是用什么,至少在我的生涯中,是log4j带我开启的日志时代。log4j是Apache的一个开源项目,我们不去考究它的起源时间,但是据我了解,log4j 1已经不再更新了。回顾log4j,曾给我们留下了多少的回忆,我记得早些年,那时候mybatis还是叫ibatis的时候,我为了配置iba...

weixin_35409775的博客 3354

Log4j的配置与使用详解

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,我们可以控制每条日志的输出格式;只需要通过一个配置文件就可以灵活的配置,而不需要修改任何代码。

龙源IT 的博客 3万+

java.lang.NoClassDefFoundError: org/apache/log4j/Priority的问题解决

java.lang.NoClassDefFoundError: org/apache/log4j/Priority的问题解决

qq_38472574的博客 612

Axis和Log4j一起使用时,出现异常org.apache.axis.ConfigurationException

Axis和Log4j一起使用时,出现异常org.apache.axis.ConfigurationException

weixin_45866907的博客 364

【完善】Log4J的简单应用

我的例子:D:\apache-tomcat-6.0.30\webapps\nps_manger 涉及4个文件: 1-log4j.properties 源码路径:D:\zhong-xue\Workspaces\MyEclipse 8.5\nps_manger\src\log4j.properties 编译路径:D:\zhong-xue\Workspaces

vessalasd1的博客 340

Only a type can be imported. org.apache.logging.log4j.core resolves to a package

多久没写代码,导个包都报错。 导包方式如下: import org.apache.logging.log4j.core; 报错如下: Only a type can be imported. org.apache.logging.log4j.core resolves to a package 大致意思如下: 意思是说只有一个类能被导入,org.apache.logging.log4j.core是一个包。 想了下,打开这个包瞅了一眼,确实如此 于是把导入的类名改为 import o

FlyClassFox的专栏 610

org.apache.log4j.Logger.log(Ljava/lang/String;Lorg/apache/log4j/Level;Ljava/lang/Object;Ljava/lang/T

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.log4j.Logger.log(Ljava/lang/String;Lorg/apache/log4j/Level;Ljava/lang/Object;Ljava/lang/Throwable;)V     at org.slf4j.impl.Log4jLogg

joecheungdishuiya的专栏 3821

(七)vulhub专栏:Log4j 反序列化、远程代码执行漏洞复现

log4j 反序列化、远程代码执行漏洞

云舒的博客 1227

log4j2 –无法加载类“ org.slf4j.impl.StaticLoggerBinder”

Java项目正在使用log4j2,但看起来某些组件已使用SLF4J日志记录,并导致以下错误消息: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www...

一名可爱的技术搬运工 3855

DataCleaner---12.1 日志配置文件

12.1 日志配置文件 在DataCleaner 中登录是基于Apache的开源日志框架Log4j。使用Log4j,您可以在非常详细的级别配置日志记录,同时保持集中式配置。 在DataCleaner中配置日志记录有三种方法: 默认日志记录配置。这不需要更改DataCleaner的标准分发版。日志文件将在log/datacleaner.log 文件中。 指定您自己的XML日志配置。这要求您在datacleaner的根目录中放置一个名为log4j.XML的文件。 指定您自己的属性文件日志配置。这要求您将一个名

weixin_43899418的博客 225
上一篇: 关于使用orcle的rowset
下一篇: 关于oracle的rowset
samlover
博客等级 码龄25年 0粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值