LogManager -> getLoggerRepository


RepositorySelector.getLoggerRepository

Hierarchy h = new Hierarchy(new RootLogger((Level) Level.DEBUG)); = RepositorySelector 

DefaultRepositorySelector(NOPLoggerRepository)

NOPLoggerRepository->NOPLogger

写入分析 

-------------------------

Logger.warn -> 

Category.warn

Category.forcelog

category.callAppenders

AppenderAttachableImpl.appendLoopOnAppenders

Appender.doAppend

这里实际上交给了各种的appender实现日志记录,这些appender在配置的时候注入

----------------------------

WriterAppender

AppenderSkeleton.doAPpend

WriterAppender.append -subAppend -this.qw.write

QuietWriter.write

这个狗屁writer又是靠外界插入write,在WRiterAppender.setWriter

  WriterAppender(Layout layout, OutputStream os) {
    this(layout, new OutputStreamWriter(os));


---------------------------

添加appender

AppenderAttachableImpl.addAppender

Category.addAPpender

这里就到了PropertyConfigurator


-------------------------

找了半天,终于找到了入口,在FileAppender,这里调用了

WriterAppender.createWriter()

 

 

初始化 

-------------------------

  public
  
synchronized
  
void setFile(String fileName, boolean append, boolean bufferedIO, int bufferSize)
                                                            
throws IOException {
    LogLog.debug("setFile called: "+fileName+""+append);

    
// It does not make sense to have immediate flush and bufferedIO.
    if(bufferedIO) {
      setImmediateFlush(false);
    }

    reset();
    FileOutputStream ostream = null;
    
try {
          
//
          
//   attempt to create file
          
//
          ostream = new FileOutputStream(fileName, append);
    } catch(FileNotFoundException ex) {
          
//
          
//   if parent directory does not exist then
          
//      attempt to create it and try to create file
          
//      see bug 9150
          
//
          String parentName = new File(fileName).getParent();
          
if (parentName != null) {
             File parentDir = new File(parentName);
             
if(!parentDir.exists() && parentDir.mkdirs()) {
                ostream = new FileOutputStream(fileName, append);
             } else {
                
throw ex;
             }
          } else {
             
throw ex;
          }
    }
    Writer fw = createWriter(ostream);
    
if(bufferedIO) {
      fw = new BufferedWriter(fw, bufferSize);
    }
    
this.setQWForFiles(fw);
    
this.fileName = fileName;
    
this.fileAppend = append;
    
this.bufferedIO = bufferedIO;
    
this.bufferSize = bufferSize;
    writeHeader();
    LogLog.debug("setFile ended");
  }

相关文章:

  • 2022-01-19
  • 2021-10-24
  • 2021-10-16
  • 2021-07-05
  • 2021-11-04
  • 2022-12-23
  • 2022-01-13
  • 2022-12-23
猜你喜欢
  • 2021-12-14
  • 2021-06-29
  • 2022-01-28
  • 2022-01-09
  • 2021-12-06
  • 2021-09-20
  • 2021-06-18
相关资源
相似解决方案