当前位置: 首页 > 面试题库 >

一般情况下登录Java:最佳实践?

厉熠彤
2023-03-14
问题内容

有时,当我看到自己的日志记录代码时,我想知道自己是否做对了。可能没有确切的答案,但是我有以下担忧:

图书馆课

我有几个库类可能记录一些INFO消息。致命错误被报告为例外。当前,我的类中有一个静态记录器实例,其类名称为记录名称。(Log4j的:Logger.getLogger(MyClass.class)

这是正确的方法吗?也许该库类的用户不需要我的实现中的任何消息,或者想要将它们重定向到应用程序特定的日志。我是否应该允许用户从“外部世界”设置记录器?您如何处理这种情况?

常规日志

在某些应用程序中,我的班级可能希望将日志消息写入未由班级名称标识的特定日志。(即:)HTTP Request log做这种事情的最好方法是什么?想到了查找服务…


问题答案:

您的约定很标准,也很不错(恕我直言)。

要注意的一件事是过多的无用调试调用导致的内存碎片,因此,使用Log4J(和大多数其他Java日志记录框架),最终会得到如下所示:

if (log.isDebugEnabled()) {
  log.debug("...");
}

因为构造该日志消息(您可能没有使用)可能会很昂贵,尤其是经过数千或数百万次的时候。

您的INFO级别日志记录不应太“闲谈”(从您所说的来看,听起来好像不是)。INFO消息通常应该有意义且有意义,例如正在启动和停止应用程序。如果遇到问题,您可能想知道的事情。当您实际要诊断的问题时,调试/精细级别日志记录将更有用。通常仅在需要时才打开调试/精简日志记录。信息通常始终显示。

如果某人不希望从您的类中获得特定的INFO消息,那么他们当然可以自由更改log4j配置以免得到它们。Log4j在该部门非常漂亮(与Java
1.4日志记录相反)。

至于您的HTTP事情,我通常不会发现Java日志记录是一个问题,因为通常一个类负责您感兴趣的事情,因此只需要将其放在一个地方即可。在(我的经验很少)中,当您想要看似无关的类之间的通用日志消息时,只需放入一些令牌即可轻松获取。



 类似资料:
  • 我有一个用例,在这个用例中,我有3个Kafka消费者向一个主题写作,每个消费者中的消息都需要按顺序处理。在这种情况下,如果某个消费者中存在延迟,则需要更早处理的消息将被丢弃(写入条件)。那么,有没有一种方法可以维持这些消息的顺序呢。

  • 在javaFx中,对于每个带有FXID的控件,我们可以在每个生成的控制器类的initialize方法中看到以下语句。 我可以理解,该语句是为了确保在加载这个fxml时,带有这个fx:id的控件出现在fxml布局文件中,如果该控件不存在,它将抛出异常并退出fxml加载过程。 null

  • 我有一个react登录页面,里面有所有的东西(丢失密码、验证电子邮件、重新发送密码等)。然而,我想知道登录后的“最佳实践”应该是什么。 我的反应组件在正确输入用户名/密码后检索“成功”。但是我应该使用反应路由器将我的用户引导到另一个位置(并“输入”一个新的反应应用程序从这里处理事情,或者你们会怎么做?我使用PHP与反应(axios)。我想到了创建一个会话并启动一个新的响应应用程序(在另一个位置)-

  • 问题内容: 我有一段代码的行为会有所不同,具体取决于我是通过字典获取转换因子还是直接使用它们。 以下代码将打印 但是,如果你更换用,并用它将打印 首先让我说我很确定这里发生了什么。我以前在C中看到过它,但是在Python中却从未见过,但是自从Python在C中实现以来,我们已经看到了它。 我知道浮点数将更改从CPU寄存器到缓存以及返回的值。我知道比较两个相等的变量应该返回false,如果其中一个被

  • 问题内容: 以下App Engine处理程序在可以获取令牌的范围内起作用: 当连接到模板时,它会从Facebook获得令牌响应并愉快地显示它。但是,最好不要将用户重定向到example.com/?state=SOME_UNIQUE_VALUE&code=AQB0iYpAf8nMmX5blahblah# = 来完成登录。 有没有一种方法可以使用client.Get等来访问授权URL,遵循重​​定向,

  • 【8.28 美团到店事业群一面(9.1收到感谢信)】 问题: 1、 手撕算法,链表公共头节点 2、实习项目,技术难点 3、前端前沿技术以及对chatgbt应用的了解(主要说了端智能,kotlin跨平台新框架、还有自己公司的gbt在产品上的应用) 反问: 1、面试官所在组内的相关chatgbt产品(他说了点评智能生成) 【9.2 小红书一面(秒挂)】 问题: 1、 实习项目,技术难点 2、 对小程序