Jakarta ee 关于web应用中的日志记录和错误消息
我正在使用Servlet/JSP开发一个演示应用程序,并使用apache开发的名为log4j的日志JAR 我的问题与在哪里使用日志有关。任何最佳做法。?Jakarta ee 关于web应用中的日志记录和错误消息,jakarta-ee,servlets,logging,Jakarta Ee,Servlets,Logging,我正在使用Servlet/JSP开发一个演示应用程序,并使用apache开发的名为log4j的日志JAR 我的问题与在哪里使用日志有关。任何最佳做法。? try{ con = ConnectionManager.getConnection(); ps = prepareStatement(con, SQL_DELETE, false, values); int affectedRows = ps.executeUpdate(
try{
con = ConnectionManager.getConnection();
ps = prepareStatement(con, SQL_DELETE, false, values);
int affectedRows = ps.executeUpdate();
if(affectedRows == 0){
log.error("delete: Deleting user failed, no rows affected");
throw new DAOException("Deleting user failed, no rows affected.");
}else{
user.setId(null);
}
}catch(SQLException e){
log.error("delete: " + e.getMessage());
throw new DAOException(e);
}finally{
close(con, ps);
}
try{
Class.forName(DRIVER);
try{
Class.forName(DRIVER);
log.info("Connecting database...");
con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
log.info("Database connected!");
}catch(SQLException ex){
throw new RuntimeException("Cannot connect the database!", ex);
}
}catch(ClassNotFoundException e){
log.error("Closing ResultSet failed: " + e.getMessage());
System.exit(-1);
}
1-应在try/catch中记录错误消息,并引发异常。见下面的例子
2-应该在需要使用System.out.println(“消息”)进行调试或打印信息的地方使用它吗
3-应该在生产中使用还是仅在开发中使用
如何在应用程序中使用它?
try{
con = ConnectionManager.getConnection();
ps = prepareStatement(con, SQL_DELETE, false, values);
int affectedRows = ps.executeUpdate();
if(affectedRows == 0){
log.error("delete: Deleting user failed, no rows affected");
throw new DAOException("Deleting user failed, no rows affected.");
}else{
user.setId(null);
}
}catch(SQLException e){
log.error("delete: " + e.getMessage());
throw new DAOException(e);
}finally{
close(con, ps);
}
try{
Class.forName(DRIVER);
try{
Class.forName(DRIVER);
log.info("Connecting database...");
con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
log.info("Database connected!");
}catch(SQLException ex){
throw new RuntimeException("Cannot connect the database!", ex);
}
}catch(ClassNotFoundException e){
log.error("Closing ResultSet failed: " + e.getMessage());
System.exit(-1);
}
我是做对了还是产生了无用的信息?
try{
con = ConnectionManager.getConnection();
ps = prepareStatement(con, SQL_DELETE, false, values);
int affectedRows = ps.executeUpdate();
if(affectedRows == 0){
log.error("delete: Deleting user failed, no rows affected");
throw new DAOException("Deleting user failed, no rows affected.");
}else{
user.setId(null);
}
}catch(SQLException e){
log.error("delete: " + e.getMessage());
throw new DAOException(e);
}finally{
close(con, ps);
}
try{
Class.forName(DRIVER);
try{
Class.forName(DRIVER);
log.info("Connecting database...");
con = DriverManager.getConnection(URL, USERNAME, PASSWORD);
log.info("Database connected!");
}catch(SQLException ex){
throw new RuntimeException("Cannot connect the database!", ex);
}
}catch(ClassNotFoundException e){
log.error("Closing ResultSet failed: " + e.getMessage());
System.exit(-1);
}
记录器基本上用于捕获日志文件中的调试语句、信息或错误消息 理想情况下,您不应该在web应用程序的任何地方使用System.out.println(“消息”),而应该只使用Logger,比如log4j
有关更多详细信息,请参阅。记录器基本上用于捕获日志文件中的调试语句、信息或错误消息 理想情况下,您不应该在web应用程序的任何地方使用System.out.println(“消息”),而应该只使用Logger,比如log4j
有关更多详细信息,请参阅。谢谢。我有属性文件,但无法设置优先级。请将属性文件中用于日志记录级别的行粘贴到此处。可以使用log4j.properties中的以下行设置日志记录级别:#根日志记录器选项log4j.rootLogger=INFO,stdout#将日志消息直接发送到stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}%5p%c{1}:%L-%m%n可以在这里找到此文件的好例子-()谢谢。我有属性文件,但无法设置优先级。请将属性文件中用于日志记录级别的行粘贴到此处。可以使用log4j.properties中的以下行设置日志记录级别:#根日志记录器选项log4j.rootLogger=INFO,stdout#将日志消息直接发送到stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.appender.stdout.layout.ConversionPattern=%d{绝对值}%5p%c{1}:%L-%m%n可以在这里找到此文件的好例子-()