簡體   English   中英

為什么它會打印兩次相同的日志?

[英]Why does it print the same log twice?

我必須通過格式化程序執行 an.upperCase(),但我不明白為什么它打印相同的消息但沒有上層,因為我已經確定它只使用它。

我正在使用 java 實用程序測試。

public DatabaseAccessProxy(String pass, DatabaseAccess database) throws SecurityException, IOException {
        this.logged = false;
        this.pass = pass;
        this.database = database;
        manejador = new ConsoleHandler();   
        fileManejador = new FileHandler("C:/Users/ignac/OneDrive/Escritorio/OO2/Practica 6/logs");
        manejador.setFormatter(new ShoutingSimpleFomatter());
        fileManejador.setFormatter(new JSONFormater());
        Logger.getLogger("app.main").addHandler(manejador);
    }
public class ShoutingSimpleFomatter extends SimpleFormatter {
    
    @Override
    public String format(LogRecord record) {
        return super.format(record).toUpperCase();
    }
    
}

Output:

MAY. 25, 2022 8:06:42 P. M. AR.EDU.UNLP.INFO.OO2.ACCESOBD.DATABASEACCESSPROXY INSERTNEWROW
ADVERTENCIA: ACCESO VALIDO PARA LA INSERCION!
may. 25, 2022 8:06:42 P. M. ar.edu.unlp.info.oo2.accesobd.DatabaseAccessProxy insertNewRow
ADVERTENCIA: Acceso valido para la insercion!
MAY. 25, 2022 8:06:42 P. M. AR.EDU.UNLP.INFO.OO2.ACCESOBD.DATABASEACCESSPROXY GETSEARCHRESULTS
INFORMACIÓN: ACCESO VALIDO PARA LA BUSQUEDA!
may. 25, 2022 8:06:42 P. M. ar.edu.unlp.info.oo2.accesobd.DatabaseAccessProxy getSearchResults
INFORMACIÓN: Acceso valido para la busqueda!
MAY. 25, 2022 8:06:42 P. M. AR.EDU.UNLP.INFO.OO2.ACCESOBD.DATABASEACCESSPROXY GETSEARCHRESULTS
INFORMACIÓN: ACCESO VALIDO PARA LA BUSQUEDA!
MAY. 25, 2022 8:06:42 P. M. AR.EDU.UNLP.INFO.OO2.ACCESOBD.DATABASEACCESSPROXY GETSEARCHRESULTS
INFORMACIÓN: ACCESO VALIDO PARA LA BUSQUEDA!
may. 25, 2022 8:06:42 P. M. ar.edu.unlp.info.oo2.accesobd.DatabaseAccessProxy getSearchResults
INFORMACIÓN: Acceso valido para la busqueda!
MAY. 25, 2022 8:06:42 P. M. AR.EDU.UNLP.INFO.OO2.ACCESOBD.DATABASEACCESSPROXY GETSEARCHRESULTS
INFORMACIÓN: ACCESO VALIDO PARA LA BUSQUEDA!
MAY. 25, 2022 8:06:42 P. M. AR.EDU.UNLP.INFO.OO2.ACCESOBD.DATABASEACCESSPROXY GETSEARCHRESULTS
INFORMACIÓN: ACCESO VALIDO PARA LA BUSQUEDA!
may. 25, 2022 8:06:42 P. M. ar.edu.unlp.info.oo2.accesobd.DatabaseAccessProxy getSearchResults
INFORMACIÓN: Acceso valido para la busqueda!
MAY. 25, 2022 8:06:42 P. M. AR.EDU.UNLP.INFO.OO2.ACCESOBD.DATABASEACCESSPROXY LOGIN
GRAVE: ACCESO INVALIDO A LA BASE DE DATOS!
MAY. 25, 2022 8:06:42 P. M. AR.EDU.UNLP.INFO.OO2.ACCESOBD.DATABASEACCESSPROXY LOGIN
GRAVE: ACCESO INVALIDO A LA BASE DE DATOS!
MAY. 25, 2022 8:06:42 P. M. AR.EDU.UNLP.INFO.OO2.ACCESOBD.DATABASEACCESSPROXY LOGIN
GRAVE: ACCESO INVALIDO A LA BASE DE DATOS!
may. 25, 2022 8:06:42 P. M. ar.edu.unlp.info.oo2.accesobd.DatabaseAccessProxy login
GRAVE: Acceso invalido a la base de datos!

您可以通過調用getHandlers()並遍歷該列表來刪除不需要的處理程序,對任何您不需要的調用removeHandler() 默認處理程序通常添加在名為"" (空字符串)的根記錄器中。

public class LoggerHandlers {
   
   public static void main( String[] args ) {
      // clean slate, remove all
      Logger root = Logger.getLogger( "" );
      Handler[] handlers = root.getHandlers();
      for( Handler h : handlers )
         root.removeHandler( h );
      Logger.getLogger( LoggerHandlers.class.getName() ).warning( "Test" );
   }
   
}

然而,這通常是一個非常糟糕的主意。 它可以防止系統操作員(“sysop”)從外部配置您的應用程序。 這是一個非常用戶敵對的應用程序。 僅在您別無選擇時在調試期間使用此選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM