Logging的基本概念与log4j

本文详细介绍了Log4j日志框架的基本概念、与调试工具的对比、核心类及其功能、配置方式等关键信息。通过具体例子阐述了如何控制日志输出的层级、位置和格式,以及日志输出的继承机制。此外,还探讨了Log4j的配置方法,包括程序代码控制和配置文件两种途径。

Logging的基本概念

        1 Logging是一个调试程序最基本的方法。

        2 Logging可以被当作一个审计工具。

那么,Logging和我们熟悉的Debugging(调试工具)相比较,有什么不同呢?

        1 Debugger在多线程和分布式的环境中并不总是可用的。

        2 Debugger的信息是临时的,而Logging记录下来的信息是永久的。

但是Logging也有自己的缺点:

        1 Logging会影响程序的性能,降低程序的执行速度。

        2 需要在程序中编写额外的代码记录相关的信息。

        3 如果输出的日志信息很多,从中间找到这些信息也是非常困难的。


Logging库所应该具备的基本功能

        1 控制logging语句何时生效和何时失效。

        2 控制logging的输出位置。

        3 控制logging的输出格式。

最重要的,以上3种功能,我们希望能够通过配置文件以及代码等形式进行灵活,方便的控制。


Log4j的实现

log4j的实现中,有3个核心的类分别实现了上面所提到的logging库应该具备的基本功能。

他们分别是LoggerAppenderLayout


本文来自 博客园 逖靖寒 http://gpcuster.cnblogs.com


Logger

Loggers 是通过名称来区别的,并且通过名称可以构成一个继承关系。

比如:叫“com.foo.bar”logger继承于叫“com.foo”logger,叫“com.foo”logger继承于叫“com”logger

Loggers 可以设置输出loglevel. 这些level分别是: DEBUG, INFO, WARN, ERROR FATAL

        1 如果一个logger没有设置level, 那么他将继承上一级loggerlevel.

        2 root logger 在所有logger的顶层. 他将一直存在并且有一个指定的level.

关于Logger输出level继承的例子:

Logger
name

Assigned
level

Inherited
level

root

Proot

Proot

X

none

Proot

X.Y

none

Proot

X.Y.Z

none

Proot

Example 1

Logger
name

Assigned
level

Inherited
level

root

Proot

Proot

X

Px

Px

X.Y

Pxy

Pxy

X.Y.Z

Pxyz

Pxyz

Example 2

Logger
name

Assigned
level

Inherited
level

root

Proot

Proot

X

Px

Px

X.Y

none

Px

X.Y.Z

Pxyz

Pxyz

Example 3

Logger
name

Assigned
level

Inherited
level

root

Proot

Proot

X

Px

Px

X.Y

none

Px

X.Y.Z

none

Px

Example 4


本文来自 博客园 逖靖寒 http://gpcuster.cnblogs.com


Appender

logging的输出位置由 Appenders来控制。log4j中的实现的 Appenders 可以输出到 console, files, Unix syslog, JMS, NT Event log, SMTP等等。

        1 多个appenders可以同时作用于1个或多个logger。

        2 appender继承上一级logger的所有appender

        3 Appender可以通过 additive属性来控制继承关系.

关于Appender继承的例子:

Logger
Name

Added
Appenders

Additivity
Flag

Output Targets

Comment

root

A1

not applicable

A1

The root logger does not have a parent.

x

A-x1, A-x2

true

A1, A-x1, A-x2

Appenders in root are added to appenders in "x".

x.y

none

true

A1, A-x1, A-x2

Appenders of "x" and root.

x.y.z

A-xyz1

true

A1, A-x1, A-x2, A-xyz1

Appenders in "x.y.z", "x" and root.

security

A-sec

false

A-sec

No appender accumulation as the additivity flag is set to false.

security.ACL

none

true

A-sec

Only appenders of "security" as the additivity flag in "security" is set to false.



本文来自 博客园 逖靖寒 http://gpcuster.cnblogs.com

Layout

用户可以通过 Layout来控制输出到Appender上的日志的格式。

        1 The PatternLayout 可是指定用户需要的格式以及输出的内容来输出.

        2 Logging的输出也可以被表示为HTMLXML的格式.

        3 我们也可以定义一个ObjectRenderer 来对输出的对象进行输出。


Configuration
        1 Log4j 的配置支持程序代码控制和配置文件。

        2 配置文件可以表示为 key=value的格式或者是xml的格式。


参考文章:

Short introduction to log4j: Ceki Gülcü, March 2002


本文来自 博客园 逖靖寒 http://gpcuster.cnblogs.com

具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)内容概要:本文介绍了一个涵盖多个科研领域的综合性MATLAB仿真资源集合,重点聚焦于光伏发电系统中基于粒子群优化(PSO)算法的最大功率点追踪(MPPT)技术的Simulink仿真实现。文档还列举了多种MPPT方法(如P&O、增量电导法、神经网络、模糊逻辑控制等),并展示了该团队在电力系统、智能优化算法、机器学习、路径规划、无人机控制、信号处理等多个方向的技术服务能力代码实现案例。整体内容以科研仿真为核心,提供大量可复现的Matlab/Simulink模型和优化算法应用实例。; 适合人群:具备一定电力电子、自动控制或新能源背景,熟悉MATLAB/Simulink环境,从事科研或工程仿真的研究生、科研人员及技术人员。; 使用场景及目标:①学习并实现光伏系统中基于粒子群算法的MPPT控制策略;②掌握多种智能优化算法在电力系统自动化领域的建模仿真方法;③获取可用于论文复现、项目开发和技术攻关的高质量仿真资源。; 阅读建议:建议结合提供的网盘资料,按照研究方向选取对应模块进行实践,重点关注Simulink模型结构算法代码逻辑的结合,注重从原理到仿真实现的全过程理解,提升科研建模能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值