This chapter discusses Oracle Diagnostic Logging, log formats, and describes various log files and their locations.
Topics discussed are:
Documentation from the Apache Software Foundation is referenced when applicable.
Note: Readers using this guide in PDF or hard copy formats will be unable to access third-party documentation, which Oracle provides in HTML format only. To access the third-party documentation referenced in this guide, use the HTML version of this guide and click the hyperlinks. |
Oracle offers a new method for reporting diagnostic messages. This new method, Oracle Diagnostic Logging (ODL), presents a common format for diagnostic messages and log files, and a mechanism for correlating all diagnostic messages from various components across Oracle Database. Using ODL, each component logs messages to its own private local repository. A tool called LogLoader
collects messages from each repository and loads them into a common repository where messages can be viewed as a single log stream, or analyzed in different ways.
You can view Oracle Database diagnostic log files using a text editor.
ODL is further discussed in the following sections:
Oracle HTTP Server enables you to choose the format in which you want to generate log messages. You can either continue to generate log messages in the legacy Apache message format, or generate log messages using ODL, which complies with the new Oracle-wide standards for generating log messages.
To enable Oracle HTTP Server to use ODL, enter the following directives in the httpd.conf
file:
Oracle recommends that you enter the directives before any modules are loaded (LoadModule
directive) in the httpd.conf
file so that module-specific logging severities are in effect before modules have the opportunity to perform any logging.
Enables you to switch between the Oracle logging format, the legacy Apache logging format, and the ODL logging format. Logging formats are defined as follows:
oracle: Fully conformant, multi-line log records in XML format. Provides the most information.
odl: Standard Apache log format and ECID information for log records specifically associated with a request. This is the default setting.
apache: Standard Apache log format. Provides the least information.
Enables you to set message severity. The message severity specified with this directive is interpreted as the lowest message severity that is desired, and all messages of that severity level and higher are logged.
OraLogSeverity
may be specified multiple times. It can be specified globally (no module_name) and once for each module for which a module-specific logging severity is desired.
This directive is only used when OraLogMode
is set to "oracle". This directive can be used in place of the LogLevel
directive, but is not required. If OraLogSeverity
is present and OraLogMode
is set to "oracle", then LogLevel
will be ignored.
This argument is the internal name of a module, as it appears in the module structure. The <IfModule
> directive also makes use of this internal name. The module structure derives the module name from the value of the _FILE_
macro, without path prefix, of the file which defines the module structure. If a module name is not supplied, the OraLogSeverity
directive is applied globally.
If the module name is specified, then the directive overrides the global directive value of all the messages originating from the specified module. Specifying a module name for a module that does not get loaded generates an error.
Message types may be specified in upper or lower case, but appears in the message output in upper case. This parameter must be of one of the following values:
INTERNAL_ERROR
ERROR
WARNING
NOTIFICATION
TRACE
This parameter must be an integer in the range of 1-32. 1 is most severe, 32 is least severe. Using level 1 will result in fewer messages than using level 32.
Table 6-1 lists some examples of OraLogSeverity
.
Table 6-1 Examples of OraLogSeverity
OraLogSeverity Example | Action Taken |
---|---|
OraLogSeverity INTERNAL_ERROR:10 |
Logs all messages of type "internal error" of levels 1-10 |
OraLogSeverity WARNING:7 |
Logs all messages of type "internal error" of all levels
Logs all messages of type "error" of all levels Logs all messages of type "warning" of levels 1-7 |
OraLogSeverity WARNING
|
If message source is mod_oc4j , then
For messages from all other sources:
|
If a message level is not specified, then the level defaults to the lowest severity. If the entire directive is omitted, then the value of the global Apache LogLevel
directive is used and translated to the corresponding Oracle message type and the lowest level within the corresponding range, as listed in Table 6-2:
Table 6-2 Apache Log Level and Corresponding Oracle Message Type
Apache Log Level | Oracle Message Type |
---|---|
emerg |
INTERNAL_ERROR:16 |
alert |
INTERNAL_ERROR:32 |
crit |
ERROR:16 |
error |
ERROR:32 |
warn |
WARNING:32 |
notice |
NOTIFICATION:16 |
info |
NOTIFICATION:32 |
debug |
TRACE:32 |
Table 6-3 lists all the different logging levels, their descriptions, and, example messages for LogLevel
directive:
Logging Level | Description | Example Message |
---|---|---|
emerg |
Emergencies- system is unusable. | "Child cannot open lock file. Exiting." |
alert |
Action must be taken immediately. | "getpwuid: couldn't determine user name from uid" |
crit |
Critical conditions. | "socket: Failed to get a socket, exiting child" |
error |
Error conditions. | "Premature end of script headers" |
warn |
Warning conditions. | "child process 1234 did not exit, sending another SIGHUP " |
notice |
Normal but significant condition. | "httpd: caught SIGBUS , attempting to dump core in..." |
info |
Informational. | "Server seems busy, (you may need to increase StartServers , or Min /MaxSpareServers )..." |
debug |
Debug-level messages. | "Opening config file..." |
Note: LogLevel directive may be omitted when OraLogMode is "oracle' and OraLogSeverity is set. |
The following log files are described in subsequent sections:
It is important to periodically rotate the log files by moving or deleting existing logs on a moderately busy server. For this, the server must be restarted after the log files are moved or deleted so that new log files are opened.
Records all requests processed by the server. The location and content of the access log is controlled by the CustomLog directive. The LogFormat
directive can be used to simplify the selection of the contents of the logs.
LogFormat
specifies the information included in the log file, and the manner in which it is written. The default format is the Common Log Format (CLF). The CLF format is: host ident authuser date request status bytes
ident
: If IdentityCheck
is enabled and the client machine runs identd
, then this is the client identity information.
date
: This is the date and time of the request in the <day/month/year:hour:minute:second>
format.
request
: This is the request line, in double quotes, from the client.
status
: This is the three-digit status code returned to the client.
bytes
: This is the number of bytes, excluding headers, returned to the client.
Log requests to the server. A log format is specified, and the logging can optionally be made conditional on request characteristics using environment variables.
The server sends diagnostic information and records error messages to a log file located, by default, in:
UNIX: ORACLE_HOME
/Apache/Apache/logs/error_log
Windows: ORACLE_HOME
\Apache\Apache\logs\error_log
The file name can be set using the ErrorLog directive.
When the server is started, it notes the process ID of the parent httpd process to the PID file located, by default, in
UNIX: ORACLE_HOME
/Apache/Apache/logs/httpd.pid
Windows: ORACLE_HOME
\Apache\Apache\logs\httpd.pid
This filename can be changed with the PidFile directive. The process ID is for use by the administrator for restarting and terminating the daemon. If the process dies (or is killed) abnormally, then it is necessary to kill the children httpd processes.
Oracle HTTP Server is capable of writing error and access log files through a pipe to another process, rather than directly to file. This increases the flexibility of logging, without adding code to the main server. In order to write logs to a pipe, replace the file name with the pipe character "|", followed by the name of the executable which should accept log entries on its standard input. Oracle HTTP Server starts the piped-log process when the server starts, and restarts it if it crashes while the server is running.
Piped log processes are spawned by the parent Oracle HTTP Server httpd process, and inherit the user ID of that process. This means that piped log programs usually run as root
so it is important to keep the programs simple and secure.
Necessary for debugging when mod_rewrite is used. This log file produces a detailed analysis of how the rewriting engine transforms requests. The level of detail is controlled by the RewriteLogLevel
directive.
Enables you to record the input to and output from the CGI scripts. This should only be used in testing, and not for live servers.
When Oracle HTTP Server starts in SSL mode, it creates ssl_engine_log
and ssl_request_log
in
UNIX: ORACLE_HOME
/Apache/Apache/logs
Windows: ORACLE_HOME
\Apache\Apache\logs
ssl_engine_log
tracks SSL and protocol issues, where as ssl_request_log
records user activity. Use the SSLLogFile
directive to control output.
Specifies the file in which to store the log of accesses to the site. If it is not explicitly included in the conf
file, then no log is generated. The server typically logs each request to a transfer file located, by default, in
UNIX:ORACLE_HOME
/Apache/Apache/logs/access_log
Windows: ORACLE_HOME
\Apache\Apache\logs\access_log
The filename can be set using a CustomLog
directive.