How to configure Logback to send specific entries to a different log file

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問


プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Fisheye および Crucible は除く

目的

The Bitbucket Server logs provide a lot of information, and in some cases, you may want to have specific events logged in a separate file for easy viewing or monitoring.

注意:

  • The files you are about to modify are maintained in the <Bitbucket Server Installation> directory, so these changes will need to be re-applied manually when Bitbucket Server is upgraded. Do not copy this modified file into the new installation.
  • A Bitbucket Server restart after these changes have been made is mandatory.
  • For versions of Bitbucket prior to 7.0, the file to modify will be named logback.xml instead of logback-spring.xml.
  • ログ ファイルの場所を変更する場合、サポート zip を生成する際にログ ファイルは含まれなくなります。つまり、サポート リクエストにログを手動で添付する必要があります。

ソリューション

These sorts of modifications can be accomplished by editing <Bitbucket Server Installation>/atlassian-bitbucket/WEB-INF/classes/logback-spring.xml (or logback.xml if you are using a Bitbucket version prior to 7.0).

The example below will create a separate access log named atlassian-bitbucket-access-gitclone.log. 

The new log file will receive only git clone-related entries by checking only for events containing the string SSH - git-upload-pack.

  • Create a new appender which is a copy of the bitbucket.accesslog appender.  Copy and add the lines below the bitbucket.accesslog appender:

                <appender name="bitbucket.accesslog" class="ch.qos.logback.core.rolling.RollingFileAppender">
                    <encoder>
                        <charset>UTF-8</charset>
                        <pattern>${accesslog.format}</pattern>
                    </encoder>
                    <file>${log.dir}/atlassian-bitbucket-access.log</file>
                    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                        <fileNamePattern>${log.dir}/atlassian-bitbucket-access-%d.%i.log</fileNamePattern>
                        <maxFileSize>25MB</maxFileSize>
                        <maxHistory>10</maxHistory>
                    </rollingPolicy>
                </appender>
    
                <!-- This will create a separate access log for git clone operations. -->
                <appender name="bitbucket.accesslog.gitclone" class="ch.qos.logback.core.rolling.RollingFileAppender">
                    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">      
                      <evaluator>
                        <expression>return ((String)mdc.get("a-request-action")).contains("SSH - git-upload-pack");</expression>
                      </evaluator>
                      <OnMismatch>DENY</OnMismatch>
                      <OnMatch>ACCEPT</OnMatch>
                    </filter>
                    <encoder>
                        <charset>UTF-8</charset>
                        <pattern>${accesslog.format}</pattern>
                    </encoder>
                    <file>${log.dir}/atlassian-bitbucket-access-gitclone.log</file>
                    <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                        <fileNamePattern>${log.dir}/atlassian-bitbucket-access-gitclone-%d.%i.log</fileNamePattern>
                        <maxFileSize>25MB</maxFileSize>
                        <maxHistory>10</maxHistory>
                    </rollingPolicy>
                </appender>
  • Add a reference to the new appender named bitbucket.accesslog.gitclone inside the bitbucket.access-log logger

    Update the block of the bitbucket.access-log logger from this:

                <!-- Enable access logs and direct it to its own separate appender -->
                <logger name="bitbucket.access-log" level="INFO" additivity="false">
                    <appender-ref ref="bitbucket.accesslog"/>
                </logger>

    To this:

                <!-- Enable access logs and direct it to its own separate appender -->
                <logger name="bitbucket.access-log" level="INFO" additivity="false">
                    <appender-ref ref="bitbucket.accesslog"/>
                    <appender-ref ref="bitbucket.accesslog.gitclone"/>
                </logger>
最終更新日 2021 年 6 月 25 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.