如何做Oracle样式编号日志?

问题描述:

在oracle中一个常听到类似的消息 -如何做Oracle样式编号日志?

ORA-01882: timezone region not found. 

这种格式有像几个好处 -

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

如何在我自己的应用程序中解决这个问题?我不只是要求一个代码片段,但你将如何管理整个过程。

  1. 你保持的错误代码在Excel中,属性文件或数据库的映射的消息?

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

  3. 在logback等流行的日志框架中是否有这样的标准规定?

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

  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具有该逻辑。