我的JSF应用程序使用最新版本的Glassfish进行部署,使用EclipseLink作为JPA提供程序。我写了一个相当简单的日志记录工具,它将日志记录存储在JPA数据库中。 Log表的列包括时间戳(当然),日志记录类型的枚举键字段,当前用户ID,网络地址和字符串消息。
这一切都没有打破,所以很自然我想解决它。 (开玩笑)我真正想知道的是,由于没有使用已建立的日志API和软件包以及使用Glassfish的设备,我错过了什么?我有兴趣了解我通过滚动自己选择的任何日志记录和分析工具。任何评论都将不胜感激。
更新问题:如果我转换为java.util.Logging,是否有将日志数据捕获到SQL后端的路径?搜索和查找内容非常方便,现有的日志记录工具似乎面向输出到文本文件。
答案 0 :(得分:2)
这个问题一直在我的脑海中蔓延,而且 - 就像这么多 - 它只是引出了进一步的问题。从哪里开始?
java.util.logging(jul),commons-logging,Log4J等等,所有其他变种传统上都是面向(我真的很努力不说意图)用于诊断和管理日志。它们不适用于应用程序“事件”日志 - 具体取决于您对事件的定义。该声明背后的主要论点是这些工具严格地定向于从代码中捕获文本字符串。
那么,谁是您的受众?
如果:
如果你需要比一行文字更多的“带宽”,j.u.l&家人不适合你。
一些诊断记录器将允许您创建自定义类别 - 例如,我相信Log4J。大多数常见的替代品都没有(j.u.l具体说不是很好,如果有的话)。
通过调用相应的log.info()语句将DB / table驱动的日志详细信息捕获到诊断日志记录工具中是微不足道的,反过来会变得有点困难。不要因为对另一个人的好奇而抛弃那个。
答案 1 :(得分:1)
您主要是因为不了解Java工具箱中最常用的两种登录方式。那些是java.util.logging和commons使用log4j进行日志记录。是的,还有其他人,但是如果你有兴趣让你的应用程序闻起来像Java EE应用程序,你会想要利用其中一个。我相信Glassfish利用JUL,所以你可能想从那里开始。这些库具有可配置的appender,用于记录到数据库,文件或甚至发送SMS文本消息。如果您坚持使用这些库提供的规定配置方法,您还将拥有其他开发人员已经知道如何使用的细粒度日志控件。