2017-01-04 10 views
7

tomcatディレクトリ/logs/mylog.logに相対的なログ記録パスを設定するにはどうすればよいですか?Springアプリケーションのログファイル名をtomcat/logsフォルダに設定する方法は?

私が試したもの:アウトファイル名を残しapplication.properties

logging.fileプロパティを変更:#logging.file= - >すべては、このようにtomcat/logs/localhost.yyyy-mm-dd.log

logging.file=mylog.logに書き込まれ、コンソールに記録される - >、などのように同じことをコンソールに書き込ま#1 logging.file

logging.file=d:/mylog.log

- >位置Dに書き込ま:/mylog.log

logging.file=../logs/mylog.log - >コンソールに書き込まれたため、引き続きlocalhost * .logになります。

なし 私は、システムや環境変数を提供するなどして、構成を外部化することには興味がありません。

+0

あなたはどのような火を編集していますか? –

+0

すべての春のプロパティは 'application.properties'に設定されています – membersound

+0

おそらく私は質問を正しく理解していませんが、これについてはどうでしょうか?' logging.file = ../logs/mylog.log' – Patrick

答えて

3

私はちょうど春のスターターから簡単なSpring-bootアプリはwarファイルとして構築作成:あなただけの設定をテストし、それを展開するために、これを入力することができたときにそれは物事が非常に簡単になります。

@SpringBootApplication 
public class LogApplication { 

    private static final Logger logger = Logger.getLogger(LogApplication.class); 

    public static void main(String[] args) { 
     SpringApplication.run(LogApplication.class, args); 
    } 

    @Controller 
    @ResponseBody 
    public static class IndexController{ 

     @RequestMapping("/") 
     public String getindex(){ 
      logger.error("Error Logging"); 
      return "Hello"; 
     } 
    } 
} 

そしてapplication.propertiesでこのプロパティ:

logging.file=../logs/mylog.log 

はMavenのmvn clean installを使用してアプリケーションを構築し、tomcatwebappsフォルダ内warファイルを入れて、私はちょうど@SpringBootApplicationクラスでこの変更を持っています。 startup.batを使用してtomcatを開始し、エンドポイントhttp://localhost:8080/demo-0.0.1-SNAPSHOTに成功しました。

そしてログがlogs/mylog.logに書かれていた:

enter image description here

2017-01-04 14:57:10.755 ERROR 8236 --- [http-apr-8080-exec-4] com.example.LogApplication    : Error Logging 
+0

詳細な答えをありがとう。それでは、おそらく、私のために違った振る舞いを引き起こす何らかの奇妙な設定をしているのは、Tomcat自体です。私はそれを見つけたときに戻ってきます。あなたが解決策を立証したので、私はあなたの答えに気付くでしょう。 – membersound

+0

私は理由はわかりませんが、次のパスを使用する必要があります: 'logging.file = logs/mylog.log'、そうでなければ" tomcat "フォルダの外側にある" tomcat home "の上位フォルダに"/log "自体。 – membersound

+0

@ memembersound strange。あなたは 'logback.xml'のような他のロギング設定ファイルを持っていませんか?あるいは、プロパティファイルに 'logging.path'を設定するのでしょうか? – Patrick

3

環境変数を使用して、ログパスを構成することができます。

Tomcatはあなた/

log4j.rootCategory = DEBUG、ERRORFILE

log4j.appender.errorfile.File = $ {catalina.home}を使用することができcatalina.homeシステムプロパティを設定しますログ/ LogFilename.log

注: - これは(Ubuntuのを含む)のDebian上で動作しないことがあり

、$ {catalina.home}はそのPOINため動作しません/ var/log/tomcat6へのリンクがない/ usr/share/tomcat6のtsです。ここでは$ {catalina.base}を使用します。 Check this link

+0

環境変数を使用することはできません。複数の 'war'ファイルを同じTomcat Webサーバー内で実行し、その特定のアプリケーションのログのみを変更したいからです。 envrn varはすべてに影響を与えるだろう – membersound

0

私はlog1からlog4jに切り替える方法を説明しているので、2回目のTomzの応答を示して、docsを指摘します。

Springブートをwarファイルにデプロイしないことを強くお勧めしますが、実行可能なfat jarファイルです。

java -jar my-service.jar /opt/my-service/conf/application.yml

+0

私の場合、私は選択肢がなく、戦争を展開しなければならない。だからこそ私は尋ねている。 – membersound

関連する問題