2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Libertyのログのファイル出力と標準出力(JSON)のフォーマット比較

2
Last updated at Posted at 2026-09-07

Libertyの以下のログについて、デフォルトのファイルへの出力とJSON形式での標準出力への出力のフォーマットを比較します。

  • messages.log
  • http_access.log
  • FFDCログ
  • messages.logに出力されるスタックトレース

今回は、deployment.yamlに以下の環境変数を設定して、messages.log、http_access.log、FFDCログが標準出力にJSON形式で出力されるようにしています。デフォルトでは、これらのログはファイルシステムへ出力されます。

WLP_LOGGING_CONSOLE_SOURCE:標準出力に出力するログの種類を指定
WLP_LOGGING_CONSOLE_FORMAT:ログの出力形式を指定

deployment.yaml
env:
- name: WLP_LOGGING_CONSOLE_LOGLEVEL
  value: info
- name: WLP_LOGGING_CONSOLE_SOURCE
  value: message,accessLog,ffdc
- name: WLP_LOGGING_CONSOLE_FORMAT
  value: json

見やすさのため、ファイルシステムの出力および標準出力は改行・整形しています。JSON形式のログについてはキーごとに改行し、標準出力のFFDCおよびスタックトレースに含まれる\nは改行して表示しています。実際には、いずれも1行のログとして出力されます。

messages.log

  • ファイルシステムの出力
[7/31/26, 6:31:22:419 GMT] 0000002f com.ibm.ws.kernel.feature.internal.FeatureManager            A CWWKF0011I: The defaultServer server is ready to run a smarter planet. The defaultServer server started in 2.276 seconds.
  • 標準出力(JSON)
{
 "type":"liberty_message",
 "host":"backend-liberty-686fb7f58f-7hfpk", 
 "ibm_userDir":"\/opt\/ol\/wlp\/usr\/", 
 "ibm_serverName":"defaultServer",
 "message":"CWWKF0011I: The defaultServer server is ready to run a smarter planet. The defaultServer server started in 2.276 seconds.",
 "ibm_threadId":"0000002f",
 "ibm_datetime":"2026-07-31T06:31:22.419+0000",
 "ibm_messageId":"CWWKF0011I",
 "module":"com.ibm.ws.kernel.feature.internal.FeatureManager",
 "loglevel":"AUDIT",
 "ibm_sequence":"1785479482419_0000000000021",
 "ext_thread":"Default Executor-thread-1"
}

ファイルシステムのmessages.logに出ているものは、すべて標準出力にも含まれています。標準出力のJSONログには、typehostibm_userDiribm_serverNameibm_sequenceext_threadといった、messages.logにはないフィールドも出力されています。

http_access.log

  • ファイルシステムの出力
10.131.0.13 - [31/Jul/2026:06:37:43 +0000] "GET /api-app/api/system/currentTime HTTP/1.1" 200 48
  • 標準出力(JSON)
{
 "type":"liberty_accesslog",
 "host":"backend-liberty-686fb7f58f-7hfpk",
 "ibm_userDir":"\/opt\/ol\/wlp\/usr\/",
 "ibm_serverName":"defaultServer",
 "ibm_remoteHost":"10.131.0.13",
 "ibm_requestProtocol":"HTTP\/1.1",
 "ibm_requestHost":"10.131.0.143",
 "ibm_bytesReceived":48,
 "ibm_requestMethod":"GET",
 "ibm_requestPort":"9080",
 "ibm_elapsedTime":379009,
 "ibm_responseCode":200,
 "ibm_uriPath":"\/api-app\/api\/system\/currentTime",
 "ibm_userAgent":"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/150.0.0.0 Safari\/537.36 Edg\/150.0.0.0",
 "ibm_datetime":"2026-07-31T06:37:43.215+0000",
 "ibm_sequence":"1785479862826_0000000000001"
}

messages.log同様、ファイルシステムのhttp_access.logに出ているものは、すべて標準出力にも含まれています。一方で、標準出力のJSONログには、typehostibm_userDiribm_serverNameibm_requestHostibm_requestPortibm_elapsedTimeibm_userAgentibm_sequenceといった、http_access.logにはないフィールドも出力されています。


以下に、messages.logとhttp_access.logで、標準出力のJSON出力にのみ出力されたフィールドをまとめました。

フィールド 説明 対象
type ログの種類 共通
host ログの発生元サーバーのホスト名 共通
ibm_userDir ログの発生元サーバーのユーザーディレクトリ 共通
ibm_serverName ログの発生元サーバー名 共通
ibm_sequence ログのシーケンス番号 共通
ext_thread ログの発生元スレッド名 messages.log
ibm_requestHost リクエストのホストIPアドレス http_access.log
ibm_requestPort リクエストのポート番号 http_access.log
ibm_elapsedTime リクエストの処理にかかった時間 http_access.log
ibm_userAgent リクエストのuserAgentの値 http_access.log

FFDC

FFDC(First Failure Data Capture)は、Libertyでエラー発生時に、障害解析に必要な診断情報を自動的に収集する機能です。

ファイルの場合、ffdcイベントが発生すると<ログ出力先>/ffdcディレクトリーが自動で作成され、サマリーファイルと詳細ファイルが記録されます。

  • exception_summary_*.log(サマリーファイル)
 Index  Count  Time of first Occurrence    Time of last Occurrence     Exception SourceId ProbeId
------+------+---------------------------+---------------------------+---------------------------
     0      1   7/31/26, 6:51:02:987 GMT    7/31/26, 6:51:02:987 GMT  java.lang.RuntimeException com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters 1105
                                                                            - /myLogs/backend-liberty-686fb7f58f-7hfpk/ffdc/ffdc_26.07.31_06.51.02.0.log
------+------+---------------------------+---------------------------+---------------------------
  • ffdc_*.log(詳細ファイル)
------Start of DE processing------ = [7/31/26, 6:51:02:990 GMT ]
Exception = java.lang.RuntimeException
Source = com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters
probeid = 1105
Stack Dump = java.lang.RuntimeException: Intentional Exception happen from HTTP request
        at com.example.saml.servlet.ExceptionTestServlet.doGet(ExceptionTestServlet.java:29)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:527)
        at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:614)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1262)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:751)
        at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:448)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:197)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:100)
        at com.ibm.ws.security.jaspi.JaspiServletFilter.doFilter(JaspiServletFilter.java:58)
        at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:203)
        at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:93)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:1069)
        at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1260)
        at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:5106)
        at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.handleRequest(DynamicVirtualHost.java:328)
        at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1047)
        at com.ibm.ws.webcontainer.osgi.DynamicVirtualHost$2.run(DynamicVirtualHost.java:293)
        at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink$TaskWrapper.run(HttpDispatcherLink.java:1563)
        at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.wrapHandlerAndExecute(HttpDispatcherLink.java:761)
        at com.ibm.ws.http.dispatcher.internal.channel.HttpDispatcherLink.ready(HttpDispatcherLink.java:721)
        at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:571)
        at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.handleNewRequest(HttpInboundLink.java:505)
        at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.processRequest(HttpInboundLink.java:365)
        at com.ibm.ws.http.channel.internal.inbound.HttpInboundLink.ready(HttpInboundLink.java:332)
        at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:169)
        at com.ibm.ws.tcpchannel.internal.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:77)
        at com.ibm.ws.tcpchannel.internal.WorkQueueManager.requestComplete(WorkQueueManager.java:513)
        at com.ibm.ws.tcpchannel.internal.WorkQueueManager.attemptIO(WorkQueueManager.java:583)
        at com.ibm.ws.tcpchannel.internal.WorkQueueManager.workerRun(WorkQueueManager.java:967)
        at com.ibm.ws.tcpchannel.internal.WorkQueueManager$Worker.run(WorkQueueManager.java:1056)
        at com.ibm.ws.threading.internal.ExecutorServiceImpl$RunnableWrapper.run(ExecutorServiceImpl.java:344)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.base/java.lang.Thread.run(Unknown Source)

Dump of callerThis
Object type = com.ibm.ws.webcontainer.osgi.filter.WebAppFilterManagerImpl
  _filterWrappers = class java.util.concurrent.ConcurrentHashMap@1ab7a4ac
    serialVersionUID = "/* Could not access serialVersionUID */"
    MAXIMUM_CAPACITY = "/* Could not access MAXIMUM_CAPACITY */"
    DEFAULT_CAPACITY = "/* Could not access DEFAULT_CAPACITY */"
    MAX_ARRAY_SIZE = "/* Could not access MAX_ARRAY_SIZE */"
    DEFAULT_CONCURRENCY_LEVEL = "/* Could not access DEFAULT_CONCURRENCY_LEVEL */"
    LOAD_FACTOR = "/* Could not access LOAD_FACTOR */"
    TREEIFY_THRESHOLD = "/* Could not access TREEIFY_THRESHOLD */"
    UNTREEIFY_THRESHOLD = "/* Could not access UNTREEIFY_THRESHOLD */"
    MIN_TREEIFY_CAPACITY = "/* Could not access MIN_TREEIFY_CAPACITY */"
    MIN_TRANSFER_STRIDE = "/* Could not access MIN_TRANSFER_STRIDE */"
    RESIZE_STAMP_BITS = "/* Could not access RESIZE_STAMP_BITS */"
    MAX_RESIZERS = "/* Could not access MAX_RESIZERS */"
    RESIZE_STAMP_SHIFT = "/* Could not access RESIZE_STAMP_SHIFT */"
    MOVED = "/* Could not access MOVED */"
    TREEBIN = "/* Could not access TREEBIN */"
    RESERVED = "/* Could not access RESERVED */"
    HASH_BITS = "/* Could not access HASH_BITS */"
    NCPU = "/* Could not access NCPU */"
    serialPersistentFields = "/* Could not access serialPersistentFields */"
    table = "/* Could not access table */"
    nextTable = "/* Could not access nextTable */"
    baseCount = "/* Could not access baseCount */"
    sizeCtl = "/* Could not access sizeCtl */"
    transferIndex = "/* Could not access transferIndex */"
    cellsBusy = "/* Could not access cellsBusy */"
    counterCells = "/* Could not access counterCells */"
    keySet = "/* Could not access keySet */"
    values = "/* Could not access values */"
    entrySet = "/* Could not access entrySet */"
    U = "/* Could not access U */"
    SIZECTL = "/* Could not access SIZECTL */"
    TRANSFERINDEX = "/* Could not access TRANSFERINDEX */"
    BASECOUNT = "/* Could not access BASECOUNT */"
    CELLSBUSY = "/* Could not access CELLSBUSY */" 
    
    ↑ 標準出力(ibm_objectDetails)では、この途中までが出力されている 
    ↓ 以降は標準出力には出力無し
    
    CELLVALUE = "/* Could not access CELLVALUE */"
    ABASE = "/* Could not access ABASE */"
    ASHIFT = "/* Could not access ASHIFT */"
    keySet = "/* Could not access keySet */"
    values = "/* Could not access values */"
  chainCache = class com.ibm.ws.webcontainer.filter.WebAppFilterManager$ChainCache@fb2798da
    chainCacheMap = class java.util.concurrent.ConcurrentHashMap@b1cabd20
      serialVersionUID = "/* Could not access serialVersionUID */"
      (以下、38行分省略)
    isMRU = false
    mruMaxSize = 200
  forwardChainCache = class com.ibm.ws.webcontainer.filter.WebAppFilterManager$ChainCache@deb22d16
    chainCacheMap = class java.util.concurrent.ConcurrentHashMap@1838d528
     ...
  includeChainCache = class com.ibm.ws.webcontainer.filter.WebAppFilterManager$ChainCache@a4ed1521
  errorChainCache = class com.ibm.ws.webcontainer.filter.WebAppFilterManager$ChainCache@7faeea1d
  chainCacheMRUThreshold = 10
  _filtersDefined = true
  FMI_MAPPING_SINGLE_SLASH = 0
  FMI_MAPPING_PATH_MATCH = 1
  FMI_MAPPING_EXTENSION_MATCH = 2
  FMI_MAPPING_EXACT_MATCH = 3
  logger = class com.ibm.ws.logging.internal.WsLogger@71ae661b
  webAppConfig = class com.ibm.ws.webcontainer.osgi.webapp.WebAppConfiguration@1e6f0916
  ...(以降省略、全体で2000行以上)
  • 標準出力(JSON)
{
  "type":"liberty_ffdc",
  "host":"backend-liberty-686fb7f58f-7hfpk",
  "ibm_userDir":"\/opt\/ol\/wlp\/usr\/",
  "ibm_serverName":"defaultServer",
  "ibm_datetime":"2026-07-31T06:51:02.987+0000",
  "message":"Intentional Exception happen from HTTP request",
  "ibm_className":"com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters",
  "ibm_exceptionName":"java.lang.RuntimeException",
  "ibm_probeID":"1105",
  "ibm_threadId":"00000249",
  "ibm_stackTrace":"java.lang.RuntimeException: Intentional Exception happen from HTTP request
    at com.example.saml.servlet.ExceptionTestServlet.doGet(ExceptionTestServlet.java:29)
   ... (残り33行省略)",
  "ibm_objectDetails":"Object type = com.ibm.ws.webcontainer.osgi.filter.WebAppFilterManagerImpl
  _filterWrappers = class java.util.concurrent.ConcurrentHashMap@1ab7a4ac...(残り34行省略)",
  "ibm_sequence":"1785480662987_0000000000001"
}

ffdc_*.log全体の出力は2,000 行以上に及びましたが、そのうち先頭から約77行目までが標準出力に出力されていることを確認できました。
ffdc_*.logで出力された、ExceptionSourceProbeIdStack DumpDump of callerThisに相当するフィールドは、いずれも標準出力でも出力されていました。
標準出力のibm_stackTraceには、ffdc_*.log(ファイルシステム)のStack Dumpと同一の内容が出力されていました。また、標準出力のibm_objectDetailsには、ffdc_*.logのDump of callerThisの冒頭部分が出力されていましたが、内容は途中で打ち切られており、全体は出力されていませんでした。

スタックトレース

スタックトレースとは、エラー発生時に、どのメソッドがどの順番で呼び出されていたのかを記録した情報です。本記事では、messages.logに出力されたスタックトレースについて比較します。

  • ファイルシステム
[7/29/26, 14:26:04:970 GMT] 000002e0 com.ibm.ws.webcontainer.util.ApplicationErrorUtils           E SRVE0777E: Exception thrown by application class 'com.ise.yshk.servlet.ExceptionTestServlet.doGet:31'
java.lang.RuntimeException: Intentional Exception happen from HTTP request
	at com.ise.yshk.servlet.ExceptionTestServlet.doGet(ExceptionTestServlet.java:31)
	at jakarta.servlet.http.HttpServlet.doHead(HttpServlet.java:221)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:544)
    (24行分省略)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.base/java.lang.Thread.run(Unknown Source)

[7/29/26, 14:26:04:972 GMT]
  • 標準出力(JSON)
{
 "type":"liberty_message",
 "host":"backend-liberty-69b5d9f44d-wmxh4",
 "ibm_userDir":"\/opt\/ol\/wlp\/usr\/",
 "ibm_serverName":"defaultServer",
 "message":"SRVE0777E: Exception thrown by application class 'com.ise.yshk.servlet.ExceptionTestServlet.doGet:31'
   java.lang.RuntimeException: Intentional Exception happen from HTTP request
       at com.ise.yshk.servlet.ExceptionTestServlet.doGet(ExceptionTestServlet.java:31)
       at jakarta.servlet.http.HttpServlet.doHead(HttpServlet.java:221)
       at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:544)
      (24行分削除)
       at java.base\/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
       at java.base\/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       at java.base\/java.lang.Thread.run(Unknown Source)",
 "ibm_threadId":"000002e0",
 "ibm_datetime":"2026-07-29T14:26:04.970+0000",
 "ibm_messageId":"SRVE0777E",
 "module":"com.ibm.ws.webcontainer.util.ApplicationErrorUtils",
 "loglevel":"ERROR",
 "ibm_sequence":"1785335164970_0000000000058",
 "ext_appName":"api-ffdc",
 "ext_thread":"Default Executor-thread-678"
}

messages.logでは、エラーメッセージやスタックトレースが複数行で出力されますが、標準出力ではmessages.logのタイムスタンプから次のタイムスタンプまでの内容が、1つのJSONエントリーとして出力されます。

まとめ

Libertyの各ログについて、ファイルシステムへの出力とJSON形式での標準出力への出力のフォーマットの違いを比較しました。
messages.logやhttp_access.logはファイルシステムに出力される内容はすべて標準出力にも含まれ、さらに標準出力のみに出力されるフィールドもありました。一方、FFDCについては、標準出力に出力される内容が途中で打ち切られていたため、用途に応じて使い分けが必要です。

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?