[英]Why does it print the same log twice?
I have to do an.upperCase() through a formatter, but I don't understand why it prints the same message but without the upper, since I have established that it uses only that.我必须通过格式化程序执行 an.upperCase(),但我不明白为什么它打印相同的消息但没有上层,因为我已经确定它只使用它。
I am using java util test.我正在使用 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: 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!
You can remove unwanted handlers by calling getHandlers()
and iterating through that list, calling removeHandler()
on any you don't want.您可以通过调用getHandlers()
并遍历该列表来删除不需要的处理程序,对任何您不需要的调用removeHandler()
。 The default handlers are normally added at the root logger which is named ""
(an empty string).默认处理程序通常添加在名为""
(空字符串)的根记录器中。
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" );
}
}
However, this is normally a very bad idea.然而,这通常是一个非常糟糕的主意。 It prevents a system operator ("sysop") from externally configuring your application.它可以防止系统操作员(“sysop”)从外部配置您的应用程序。 This is a very user hostile app.这是一个非常用户敌对的应用程序。 Use this only during debugging when you have no other choice.仅在您别无选择时在调试期间使用此选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.