つまり、別のファイルに含まれていてもクラスにコンパイルされていても、logger名にsource.jspファイルを反映させたいのです。jspページ内でlog4jを使用する正しい方法は何ですか
答えて
の何が問題なのです:
Logger logger = Logger.getLogger("source.jsp");
あなたはもちろん、優れた非あいまいな接頭辞でそれを付加することができます。実際にはJSPS
ロガーのロギングルールを設定できるので、JSPS.source.jsp
という行に沿ったものが優れています。後ですべてのサブログに適用されます。
このように言えば、なぜJSPから直接ログオンする必要がありますか?
以下はコードです。すべての構成ファイルの配置と構成は、サーブレットまたは他のクラスでの使用方法と同じです。
<%@ page import="org.apache.log4j.Logger" %>
<html>
<head>
<title>Demonstration log4j usage in jsp</title>
</head>
<body>
<% Logger log = Logger.getLogger("com.mobilefish.demo.test");
log.debug("Show DEBUG message");
log.info("Show INFO message");
log.warn("Show WARN message");
log.error("Show ERROR message");
log.fatal("Show FATAL message"); %>
<b>The log messages are shown in the Tomcat console and in the ${catalina.home}/logs/demo.log file.</b>
</body>
</html>
あなたは、このような何かをパラメータとして、現在の要求を受け取り、JSP名に基づいてロガーを取得するファクトリメソッドを書くことができます:
public static Logger getLogger(HttpServletRequest request) {
String requestUri = request.getRequestURI();
String jspName = requestUri.substring(requestUri.lastIndexOf('/'));
return Logger.getLogger(jspName);
}
をあなたはと遊ぶために必要がある場合があります上記のコードをテストしていませんが、それを動作させるには少しですが、それはその要点です。
これは、リクエストオブジェクトにアクセスできる限り、JSP、またはJSPで使用されるBeanまたはタグクラスから直接使用できます。 log4jのを設定するとき
は、例えばを適切なConversionPatternを使用します。ここでは
%d [%C] %-5p %c - %m%n
あなたはLoggerクラスのメソッドを呼び出すとき、%Cは、完全修飾クラス名を出力します。
まず、必要なパッケージをインポートすなわち
<%@page import="org.apache.log4j.Logger"%>
次いで、
<%! static Logger logger = Logger.getLogger(jsppagename_jsp.class); %>
jsppagename_jsp
は、使用しているサーバーに応じて、変更してもよいです。そして、同様に、JSP内の任意の場所を使用します。
<% logger.info("This is test."); %>
IDEは、ロガーオブジェクトの宣言時にエラーメッセージが表示される場合があります。しかし、気にしないでください。tomcatのようなサーバーは、自動的にTomcat内の各JSPページの対応するサーブレットクラスを自動的に作成します。
は次のようになります。<%@ page import = "org.apache.log4j.Logger"%> –
これは本当にうまくいきます。私はクラス名の '_jsp'部分がクラスを見つけるために必須であることを指摘したいと思います。私はJSPがクラス名を記録するのが大好きです! – Noumenon
それはあなたが出力にこのコードの古い質問ものの
<%@page import="org.apache.log4j.Logger"%>
<%-- output of the jsp-el variables "orderID" and "orderDate" in log4j --%>
<c:set var="Parameter4Log4J" value="orderID=${orderID} orderDate=${orderDate}" />
<% Logger.getLogger("jsp.order.orderconfirmation").info(
pageContext.getAttribute("Parameter4Log4J")); %>
を使用することができますlog4netの中のjsp-EL-変数の内容を望む可能性があるので、私はいくつかのオプションを提供したいと思います。 jspファイル名= for_example.jspと言う:
1。直接ファイル名を使用しますが、アンダースコア
Logger log = Logger.getLogger("for_example_jsp");
でドットを置き換える(注:APサーバは、Tomcatを言う、何を見つけたとき、常にミスが直接「for_example.jsp」を使用することで、それは、クラス名として扱わないとされますcatalina.outでこのようなクラスパス、それは意志の出力ログメッセージ "...(JSP)...."。
2.リクエストURI
Logger log = Logger.getLogger(request.getRequestURI());
誰かがこれを好きな私。なぜか分からないが、私はこれを見た前に誰かのコードで。
3.クラス名
Logger log = Logger.getLogger(this.getClass());
これは通常test_servlet「と言う、for_example.jspが他のサーブレットに含まれている場合を除き、「for_example_jsp 『を取得するファイルのログ名を含め』、それは次のようになります」 '+ '注文番号'、例えばtest_servlet_include_005。
4.プログラムにより取得するJSPファイル名
String __jspName = this.getClass().getSimpleName(); // Get jsp program name
Logger log = Logger.getLogger(__jspName);
__jspName = __jspName.replaceAll("_","."); // get back true jsp file name
ただし、これは使用しているAPサーバーとバージョンに関して必ずしも正しいとは限りません。
私は個人的には方法1を使用していますが、最も信頼できると思います。
- 1. PushSharpを使用する正しい方法は何ですか?
- 2. AddOnで使用するJSPページをカスタマイズする方法は?
- 3. jspページでBeanの値を呼び出す正しい方法は何ですか?
- 4. ログレベルをJSPページに設定する - LOG4J
- 5. JSP/Servletで再利用可能で柔軟なフォームコンポーネントを作成する正しい方法は何ですか?
- 6. C++でrand()関数を使用する正しい方法は何ですか?
- 7. Cでビットフィールドを使用する正しい方法は何ですか?
- 8. recyclerviewでsetVisibility()を使用する正しい方法は何ですか
- 9. CSSでクラスを使用する正しい方法は何ですか?
- 10. Googleクローズでsoyutilsを使用する正しい方法は何ですか?
- 11. Express.jsでmaxAgeを使用する正しい方法は何ですか?
- 12. Androidでレイアウトインフレータを使用する正しい方法は何ですか?
- 13. アンドロイドでエスプレッソを使用する正しい方法は何ですか?
- 14. PHPで例外を使用する正しい方法は何ですか?
- 15. django-allauthをtastypieで使用する正しい方法は何ですか?
- 16. HTMLでスプライトイメージを使用する正しい方法は何ですか?
- 17. autoreleasepoolで領域を使用する正しい方法は何ですか?
- 18. Unicodeメタデータをsetup.pyで使用する正しい方法は何ですか?
- 19. Androidスタジオでアラートダイアログを使用する正しい方法は何ですか?
- 20. TextFieldでsetValueを使用する正しい方法は何ですか?
- 21. C#で辞書を使用する正しい方法は何ですか?
- 22. CordovaでlocalForageを使用する正しい方法は何ですか?
- 23. パンダで.applyを使用する正しい方法は何ですか?
- 24. jspページのクラスは何ですか?
- 25. LINQを使用して列挙する正しい方法は何ですか?
- 26. WEB-INF(Netbeans)のJSPページでスタイルシート(CSS)を使用する方法
- 27. herokuでmongodbを使う正しい方法は何ですか
- 28. jspページ内の内部ajax関数json値を使用する方法?
- 29. 複数のリポジトリを使用する正しい方法は何ですか?
- 30. このヘルパーを使用する正しい方法は何ですか?
JSPから直接ログを記録すると何が問題になりますか?ベストプラクティスは何でしょうか? –
Tomcatでは、上記の文は 'source.jsp'の代わりに 'jsp'のみをログファイルに出力します。少なくとも 'source_jsp'またはthis.getClass()を使用する必要があります。 –