2016-04-12 19 views
1

WebLogic 12.2.1でJAX-RS Webサービスが実行されています。ここに示したように、Webサービスは、ロギング用log4j2を使用し、log4j2.xmlに指定されているこれまでのところ、ログファイルにログインすることができます:

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="DEBUG"> 
    <Properties> 
     <Property name="log-path">E:/MLM/MLMDomain/servers/MLMAppSrv01/logs</Property> 
    </Properties> 
    <Appenders> 
     <RollingFile name="RollingFile" fileName="${log-path}/MLMServices.log" filePattern="${log-path}/MLMServices-%d{yyyy-MM-dd}-%i.log" > 
    .... 

次に、代わりに管理対象サーバー名をハードコーディングする「MLMAppSrv01」

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="DEBUG"> 
    <Properties> 
     <Property name="log-path">E:/MLM/MLMDomain/servers/${weblogic.Name}/logs</Property> 
    </Properties> 
    <Appenders> 
     <RollingFile name="RollingFile" fileName="${log-path}/MLMServices.log" filePattern="${log-path}/MLMServices-%d{yyyy-MM-dd}-%i.log" > 
    .... 

を今すぐ代わりに、実際のWebLogicサーバー名、単にlog4j2で$ {weblogic.Name}を置き換えるので、:ここに示したように、私は、 "$ {weblogic.Nameを}" を使用して、プロパティの置換にそれを変更しました$ {weblogic.Name}を実際のサブフォルダ名として扱ったので、フォルダにログファイルが作成されました。

E:/MLM/MLMDomain/servers/${weblogic.Name}/logs 

Webサービスコードでは、System.getProperty( "weblogic.Name")を使用すると、アプリケーションが実行されていた実際の管理対象サーバー( "MLMAppSrv01")を取得できました。したがって、 "weblogic.Name"は実際にJVMで定義されていることを示しています。

私はスタンドアロンプ​​ログラムで修正log4j2.xmlファイルを使用し、-Dweblogic.Name = MLMAppSrv01に渡し、それが正常に動作し、ファイルがで作成されます。何ができるか

E:/MLM/MLMDomain/servers/MLMAppSrv01/logs 

log4j2.xmlの$ {}がWebLogicで動作しない理由は何ですか?

ありがとうございます。

答えて

1

変数がシステムプロパティとして指定されている場合、Log4jが変数を解決するためにLog4jが使用するように$ {sys:weblogic.Name}を使用する必要があります。これがなければ、プロパティセクションで宣言された変数にのみアクセスできます。

+0

ありがとうございました!私はまだスタンドアローンのプログラムのために、 "sys:"という接頭辞の有無にかかわらず動作するのは難しいです。しかし、WebLogicでは、私は間違いなく "sys:"プレフィックスが必要です。 – user3573403

関連する問題