如何登录web项目?最佳实践

wnvonmuf  于 2021-06-30  发布在  Java
关注(0)|答案(3)|浏览(284)

我正在尝试使用tomcat、jsp、servlets和log4j来完成我的第一个web项目。现在我在abstractrepository中有一个记录器,其初始化如下:

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

问题是如何登录子类(用户存储库、主题存储库等)。在abstractrepository中有一个logger或creategetter并只使用这个logger是否更好?

请帮我回答题目

thigvfpy

thigvfpy1#

试着用这个,它用 log.properties 文件来设置格式并生成日志。整个应用程序只使用一个全局记录器。

ntjbwcob

ntjbwcob2#

一定有一个 log4j.properties src文件夹中的文件,witch配置为日志消息输出。现在,正如您想知道的,我们需要为每个类创建单独的logger对象。
private final static Logger LOG = Logger.getLogger(SubjectRepository.class); private final static Logger LOG = Logger.getLogger(UserRepository.class);

fcipmucu

fcipmucu3#

使记录器私有,并为每个子类创建新的记录器。如果这样做,则可以为每个记录器单独配置级别:

<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。这是一个日志facade,它将从所有遗留框架收集日志,并将其路由到您选择的框架,即log4j或logback。我建议您使用logback作为日志实现,因为它已经基于slf4j,现代且快速,并且它与log4j一样简单。
更新
要使其正常工作,首先需要将这些jar包含到类路径中(通过maven或“lib”-directroy):
slf4j-api.jar文件
jcl-over-slf4j.jar(将apache commons日志重定向到slf4j)
log4j-over-slf4j.jar(将log4j重定向到slf4j)
jul-to-slf4j.jar(将java util日志重定向到slf4j,请参阅handlerbridge信息)
logback-classic.jar(从slf4j重定向到logback日志)
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());

相关问题