相比较Tomcat,weblogic以其强大的功能(比如支持jsp和servlet等java规范,分布式部署应用)堪称重量级服务器,所以如果一旦服务器出现故障或性能降低等问题时,日志成了分析的重要载体。
在这里,我只对weblogic自带的三种日志进行介绍,其他诸如在程序里结合log4j输出日志就暂时不涉及。
1.
服务器日志每个 WebLogic Server 实例将来自子系统和应用程序的所有消息写入位于本地主机上的服务器日志文件。默认情况下,服务器日志文件位于服务器实例根目录下的 logs 目录中;例如,DOMAIN_NAME\servers\SERVER_NAME\logs\SERVER_NAME.log,其中 DOMAIN_NAME 是在其中定位域的目录的名称,而 SERVER_NAME 是服务器的名称。可在管理控制台的Gernal属性页中设置该文件的路径及名字,错误的输出的等级等。
每条日志消息都具有关联的严重程度级别。日志消息的级别大致说明其重要级别或紧急级别。WebLogic Server 具有从 TRACE 到 EMERGENCY 的预定义严重程度,在将日志请求调度给记录器时,会将对应严重程度转换为日志级别。
可以在记录器和处理程序上设置日志严重程度级别。在记录器上进行设置时,任何处理程序 都不会收到记录器已拒绝的事件。例如,如果在记录器上将日志级别设置为 NOTICE,则任何处理程序都不会收到 INFO 级别的事件。在处理程序上设置日志级别时,仅会对处理程序应用限制,而不会对其他程序应用限制。例如,为文件处理程序关闭 DEBUG 意味着不会将任何 DEBUG 消息写入日志文件,但会将 DEBUG 消息将写入标准输出。
格式:
####<2014-4-15 上午10时24分26秒 CST> <Info> <Security> <lujixiang-pc> <> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <> <> <> <1397528666503> <BEA-000000> <Changing the default Random Number Generator in RSA CryptoJ from ECDRBG to FIPS186PRNG. To disable this change, specify -Dweblogic.security.allowCryptoJDefaultPRNG=true.>
2. DOMAIN日志
除将消息写入服务器日志文件外,每个服务器实例还会将其一部分消息转发到域范围日志文件。默认情况下,服务器仅转发严重程度级别为 NOTICE 或更高的消息。虽然可以对转发哪些消息进行修改,但服务器永远不转发严重程度级别为 DEBUG 的消息。
域日志文件提供用于查看域整体状态的中央位置。域日志驻留在管理服务器的 logs 目录中。域日志文件的默认名称和位置是 DOMAIN_NAME\servers\ADMIN_SERVER_NAME\logs\DOMAIN_NAME.log,其 中,DOMAIN_NAME 是在其中定位域的目录的名称,而 ADMIN_SERVER_NAME 是管理服务器的名称。
域日志中记录的时间戳是发出消息的服务器的时间戳。域日志中的日志记录不会按照其时间戳顺序写入;会在消息到达后立即将其写入。有可能受管服务器在一段时间内无法与管理服务器联系。在这种情况下,消息被缓冲在本地并在重新连接服务器之后发送到管理服务器。
格式:
####<2014-4-15 上午10时25分09秒 CST> <Error> <Deployer> <lujixiang-pc> <AdminServer> <[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1397528709164> <BEA-149205> <Failed to initialize the application "examples-demo" due to error weblogic.application.ModuleException: weblogic.common.ResourceException: weblogic.common.ResourceException: Could not create pool connection. The DBMS driver exception was: java.net.ConnectException:连接到端口 1527 上的服务器 localhost 时出错,消息为 拒绝连接。
3.
HTTP访问日志在WebLogic中可以对用HTTP,HTTPS协议访问的服务器上的文件都做记录,该LOG文件默认的名字为Access.log,内容如下,该文件具体记录在某个时间,某个IP地址的客户端访问了服务器上的那个文件。
127.0.0.1 - - [25/Feb/2002:11:35:58 +0800] "GET /weather HTTP/1.1" 302 0
127.0.0.1 - - [25/Feb/2002:11:35:58 +0800] "GET /weather/index.Html HTTP/1.1" 200 176
HTTP访问日志的属性可在HTTP属性页中进行设置。
HTTP 子系统在文本文件中保留所有 HTTP 事务的日志。HTTP 访问日志的默认位置和滚动策略与服务器日志相同。可以为每个服务器或每个定义的虚拟主机设置用于定义 HTTP 访问日志行为的特性。
重点总结: 1.
日志消息格式 在 WebLogic Server 实例向服务器日志文件中写入消息时,每条消息的第一行以 #### 开头,后跟该消息的特性。每个特性都括在尖括号中。
以下是服务器日志文件中一条消息的示例:
####<Sept 22, 2004 10:46:51 AM EST> <Notice> <WebLogicServer> <MyComputer> <examplesServer> <main> <<WLS Kernel>> <> <null> <1080575211904> <BEA-000360>
<Server started in RUNNING mode>
在此示例中,消息的特性为:按区域设置格式的时间戳、严重程度、子系统、计算机名、服务器名、线程 ID、用户 ID、事务 ID、诊断上下文 ID、原始时间值、消息 ID 和消息文本。(后面的消 息特性部分中描述各个特性。)
如果一条消息不是在事务上下文中记录的,则即使不包含事务 ID,也会包含用于事务 ID 的尖括号。
如果该消息中包含一个堆栈跟踪,则该堆栈跟踪包含在消息文本中。WebLogic Server 为其写入的消息使用主机的默认字符编码。
标准输出和标准错误中输出的格式
在 WebLogic Server 实例将一条消息写入标准输出时,该输出不包含 #### 前缀,也不包含服务器名、计算机名、线程 ID、用户 ID、事务 ID、诊断上下文 ID 和原始时间值字段。
以下示例说明如何将前一部分中的消息输出到标准输出中:
<Sept 22, 2004 10:51:10 AM EST> <Notice> <WebLogicServer> <BEA-000360> <Server started in RUNNING mode>
在此示例中,消息特性为:按区域设置格式的时间戳、严重程度、子系统、消息 ID 和消息文本
2.设置日志级别。
在生产期间,如果将所有的日志都进行输出,必定会影响服务器性能,所以选择适当的日志级别很重要。
通过web界面进入控制台可设置log过滤器,具体的步骤在此就不细说了。