【问题标题】:Logging Oracle Java Stored Procedure using Java Logging API (java.util.logging )使用 Java Logging API (java.util.logging) 记录 Oracle Java 存储过程
【发布时间】:2012-11-19 01:55:03
【问题描述】:
我在 Oracle (10g) 中开发了一个新的 Java(1.4) 存储过程。我以前从未这样做过,我通常将 Java 和 DB 分开,但这是必需的。所以我开发了一个可以部署在 Tomcat 中的 Java 代码以及 Oracle 中的存储过程。为此,我使用了 Java Logging API。
我可以在 Oracle 中执行存储过程,但我找不到日志。我想知道我应该怎么做才能打印日志,可以是 Oracle 日志或 trc 文件,或者如果可能的话,甚至可以将其配置为将日志打印到另一个特定文件夹。
有谁知道如何做到这一点?
【问题讨论】:
标签:
java
oracle
logging
stored-procedures
oracle10g
【解决方案1】:
PeskyGnat 在this answer 中指定您必须在文件夹中创建一个 logging.properties 文件:
$ORACLE_HOME/javavm/lib
配置完这个文件后,就可以看到登录了:
$ORACLE_BASE/admin/$INSTANCE/udump
在我的例子中,这是 Solaris,所以第一条路径是:
/export/home/oracle/app/oracle/product/10.2.0/Db_1/javavm/lib
第二个:
/export/home/oracle/app/oracle/admin/
作为额外信息,为了便于查找日志文件,您可以在 Bash shell 中键入以下内容:
ls -altr
这是 logging.properties 文件的示例:
############################################################
# Default Logging Configuration File
#
# You can use a different file by specifying a filename
# with the java.util.logging.config.file system property.
# For example java -Djava.util.logging.config.file=myfile
############################################################
############################################################
# Global properties
############################################################
# "handlers" specifies a comma separated list of log Handler
# classes. These handlers will be installed during VM startup.
# Note that these classes must be on the system classpath.
# By default we only configure a ConsoleHandler, which will only
# show messages at the INFO and above levels.
handlers= java.util.logging.ConsoleHandler
# To also add the FileHandler, use the following line instead.
#handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
# Default global logging level.
# This specifies which kinds of events are logged across
# all loggers. For any given facility this global level
# can be overriden by a facility specific level
# Note that the ConsoleHandler also has a separate level
# setting to limit messages printed to the console.
.level= INFO
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
# Limit the message that are printed on the console to INFO and above.
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
**<your.class.logger>.level = <level> (i.e.: INFO)**