繁体   English   中英

如何登录网页项目? 最佳实践

[英]How to log in web project ? best practice

我正在尝试使用tomcat,jsp,servlet和log4j做我的第一个Web项目。 现在我在AbstractRepository中有一个记录器,其初始化如下:

private final static Logger LOG = Logger.getLogger(AbstractRepository.class);

问题是如何登录子类(用户存储库,主题存储库等)。 每个子类在AbstractRepository中拥有一个记录器或创建getter并仅使用此记录器是否更好?

仓库层次结构

PS帮我解答问题标题

将Logger设为私有,并为每个子类创建新的Logger。 如果这样做,则可以为每个Logger自己配置级别:

<logger name="ua.nure.[...etc..].AbstractRepository" level="INFO" />
<logger name="ua.nure.[...etc..].SubjectRepository" level="DEBUG" />
<logger name="ua.nure.[...etc..].UserRepository" level="WARN" />

如果您可以自由选择日志记录框架,请使用SLF4J 这是一个日志记录外观,它将收集所有旧框架的日志记录并将其路由到您选择的框架,即log4j或logback。 我建议您将Logback用作日志记录实现,因为它已经基于SLF4J,它既现代又快速,并且与Log4J一样容易。

更新

为了使其正常工作,首先需要将这些Jar包含在类路径中(通过Maven或“ lib” -directroy):

  1. SLF4J-api.jar文件
  2. jcl-over-slf4j.jar (将Apache Commons Logging重定向到SLF4J)
  3. log4j-over-slf4j.jar (将Log4J重定向到SLF4J)
  4. jul-to-slf4j.jar (将Java Util日志记录重定向到SLF4J,请参阅HandlerBridge info
  5. logback-classic.jar (从SLF4J重定向到Logback日志记录)
  6. 的logback-core.jar添加

在“ src / java / resources”(Maven)或您的类路径的默认包(“ src”)中放置一个名为“ logback.xml”的文件,并添加一些内容 ,即:

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="false" scanPeriod="10 seconds">

<!-- This appender prints to stdout: -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
    <Target>System.out</Target>
    <encoder>
        <pattern>%p %d{dd.MM.yyyy HH:mm:ss} [%c] - %m%n</pattern>
    </encoder>
</appender>

<!-- Log levels for specific packages or classes: -->

<logger name="my.company.projectname.package" level="INFO" />

<logger name="ua.nure" level="INFO" />

// add more here ...

<!-- Log levels for all packages and classes can be controlled here: -->
<root level="INFO">
    <!-- add more appenders (rolling file, email, ...) here: -->
    <appender-ref ref="stdout" />
</root>

</configuration>

例如,将根记录器设置为“ warn”,将项目特定的记录器设置为“ info”。 这将显示项目中最多的日志,但仅显示其他库中的警告和错误。

在您的班级中,以这种方式创建记录器:

//default
private final Logger LOG = LoggerFactory.getLogger(this.getClass());
//static
private static final Logger LOG = LoggerFactory.getLogger(MyClass.class);
//in a serializable
private transient final Logger LOG = LoggerFactory.getLogger(this.getClass());

尝试使用此Mkyong ,它使用log.properties文件设置格式并构建日志。 整个应用程序仅使用一个全局记录器。

src文件夹中必须有一个log4j.properties文件,已配置巫婆用于日志消息输出。现在,您要知道,我们需要为每个类创建单独的Logger对象。

  1. private final static Logger LOG = Logger.getLogger(SubjectRepository.class);

  2. private final static Logger LOG = Logger.getLogger(UserRepository.class);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM