私はWebアプリケーションのログを記録する目的でLog4j2を使用しています。 単純なJavaクラスを作成してロガーを呼び出すと、完全に正常に動作し、ログをファイルに出力します。しかし、私がサーブレットクラスで同じことをしても、動作しません。 ドキュメントで指定されているとおり、web.xmlのlog4j2に関連するものは設定していません。サーブレット3.0のLog4j2を使用
web.xmlのコード:サーブレットクラスで
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>SampleWebApp</display-name>
<welcome-file-list>
<welcome-file>Welcome.jsp</welcome-file>
</welcome-file-list>
</web-app>
ロギングコード:
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger log=LogManager.getLogger(MyServlet.class);
私はこれを追加したので、私は明示的に、WEB-INFフォルダにlog4j2.xmlファイルを配置していませんプロジェクトをビルドした後、自動的にWEB-INF/classesに追加されます。
いくつかの設定がありません。
コードのライン:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
log.error("i am inside servlet");
/*response.getWriter().append("Served at: ").append(request.getContextPath());*/
System.out.println("GET called");
}
log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<File name="MyFile" filename="C:/Users/jasleen_kathuria/Documents/logs/info.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<Loggers>
<logger name="MyServlet" level="TRACE">
<AppenderRef ref="MyFile"/>
</logger>
</Loggers>
"これは機能していません"というのは、まだSA上のエラーの説明です...少なくとも、エラーの内容を指定することはできますか?コンパイラエラー、ランタイムエラー、またはロガーがログファイルにアクセスできない場合は、サーバー上のログファイルを見つけることができません。 :) – xander
これは奇妙ですが、私はエラーを取得していません!そのログが生成されないことだけです。 –
パッケージ内にMyServletクラスがあります。もしそうなら、_full name_をロガー設定に入れなければなりません。 – minus