log4j

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://github.com/sunwu51/notebook/blob/master/19.11/log_java%E6%97%A5%E5%BF%97%E6%A1%86%E6%9E%B6.md

https://www.bilibili.com/video/av76723781

5、log4j2使用指南

6、log4j的源码学习

我是uml图例的参考文章

同时照着博主的日志把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&uuml;lc&uuml;
 *
 * @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";  
原文地址:https://www.cnblogs.com/zhucezmf/p/11149537.html