【问题标题】:How to do Oracle style numbered logging?如何进行 Oracle 风格的编号日志记录?
【发布时间】:2013-05-03 13:50:59
【问题描述】:

在 oracle 中,人们经常会收到这样的消息 -

ORA-01882: timezone region not found.

这种格式有几个好处,比如 -

  1. 更容易提供电话支持,客户只需读出错误代码。
  2. 更容易搜索和计算文件中的特定错误。我可以只搜索唯一的错误代码,而不是使用基于正则表达式的模式匹配来搜索日志消息。

如何在我自己的应用程序中实现这一点?我不只是要求一个代码 sn-p,而是你将如何管理整个过程。

  1. 您会在 Excel、属性文件或数据库中维护错误代码到消息的映射吗?

  2. 在使用之前是否需要手动将每个代码消息组合输入到 DB 中?我可以让我的日志记录框架为我记录的每个唯一字符串自动创建一个随机错误代码吗?

  3. 在流行的日志框架(如 logback)中是否对此有标准规定?

【问题讨论】:

    标签: java logging slf4j logback


    【解决方案1】:

    您需要为必须确定的每种错误类型设置一个键。 ResourceBundles 可以帮助你。曾经使用它的理由是语言支持。只要您为每种语言提供一个文件,文本就可以是任何语言。

    【讨论】:

      【解决方案2】:
      1. 如果您想要 I18N 支持,请使用属性。

      2. 如果存在,特定代码部分可能会出现特定数字错误。 例如Apache Derby 有一个带有错误消息标识符列表的界面。这是一组消息标识符。

        String CONNECT_PASSWORD_ISNULL = "08001.C.8";
        String CONNECT_SOCKET_EXCEPTION = "08001.C.3";
        

        此标识符在code 的某些部分中使用。

        throw Util.generateCsSQLException(SQLState.CANNOT_COMMIT_XA);
        
      3. 登录您喜欢的框架。例如MyBatis 使用自定义登录类来登录到多个框架,org.apache.ibatis.logging.LogFactory 类有这个逻辑。

      【讨论】:

        猜你喜欢
        • 2012-03-02
        • 2018-07-15
        • 2016-06-05
        • 2014-04-13
        • 2014-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-16
        相关资源
        最近更新 更多