log4j1.2相关资料:
如何做配置文件,
1、Log4j1.2配置详解,我是链接
2、apache官网
3、如何在springboot项目中指定log4j.properties路径
将log4j.properties文件放在工程src/main/resources目录下
4、老旧项目(使用了log4j)中同一替换成sl4j来管理日志(代码里是log4j就用桥接(把老的Logger类替换掉,让classload加载一份新的Logger),代码里是slf4j就用适配器)
写log4j就能在外面用slf4j调到依赖里面了:重写的log4j的方法实现部分(在Category类)瓤子被全部换成委托给slf4j了
- slf4j-log4j12:与log4j联合使用,用于使当前项目的log4j实现slf标准
- log4j-slf4j-impl:与log4j2联合使用,用于使当前项目的log4j实现slf标准
- log4j-over-slf4j:与剔除log4j联合使用,替换log4j,使log4j实现slf。用于让单独用log4j的依赖能遵循slf,进而统一日志配置。
- log4j-to-slf4j:与剔除log4j2联合使用,替换log4j2,使log4j2实现slf。用于让单独用log4j2的依赖能遵循slf,进而统一日志配置。
引用出处:
https://www.bilibili.com/video/av76910319
https://www.bilibili.com/video/av76723781
同时照着博主的日志把uml的标记学习一下:
实现 是一种类与接口的关系,表示类是接口所有特征和行为的实现.
public class Category implements ULogger, AppenderAttachable
继承 (按照我找到的参考文章,Appender这里应该使用虚线,源码分析的老师可能没注意),关于Layout的标识是正确的
public abstract class AppenderSkeleton extends ComponentBase implements Appender, OptionHandler//所以这里应该是实现的关系
public class HTMLLayout extends Layout //继承关系
聚合 是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
/** Call the <code>doAppend</code> method on all attached appenders. */ public int appendLoopOnAppenders(LoggingEvent event) { int size = 0; Appender appender; if (appenderList != null) { size = appenderList.size(); for (int i = 0; i < size; i++) { appender = (Appender) appenderList.elementAt(i); appender.doAppend(event); } } return size; }
组合
"【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。"
/** * Abstract superclass of the other appenders in the package. This class * provides the code for common functionality, such as support for threshold * filtering and support for general filters. * * @author Ceki Gülcü * * @since 0.8.1 */ public abstract class AppenderSkeleton extends ComponentBase implements Appender, OptionHandler { /** * The layout variable does not need to be set if the appender * implementation has its own layout. */ protected Layout layout;
依赖 依赖关系:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.
public class LogManager { /** * @deprecated This variable is for internal use only. It will * become package protected in future versions. * */ static public final String DEFAULT_CONFIGURATION_FILE = "log4j.properties"; /** * @deprecated This variable is for internal use only. It will * become package protected in future versions. * */ static final String DEFAULT_XML_CONFIGURATION_FILE = "log4j.xml";