logbackのログファイル出力設定をプログラム処理から参照する。

logback-classic-1.4.x.jar から、
ch.qos.logback.classic.LoggerContext
を取得して、ch.qos.logback.classic.Logger を求めて、Appender<ILoggingEvent>イテレータ
設定された各アペンダを参照、RollingFileAppender<ILoggingEvent< cast して
ローテーション・ファイルアペンダの状況を以下の様に参照することができる。

LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
for(ch.qos.logback.classic.Logger clogger : context.getLoggerList()) {
    for(Iterator<Appender<ILoggingEvent>> itr = clogger.iteratorForAppenders(); itr.hasNext();) {
        Appender<ILoggingEvent> apd = itr.next();
        if (apd instanceof RollingFileAppender<ILoggingEvent> ra) {
            System.out.println("appender-ref(アペンダリファレンス) = "+ apd.getName() );
            System.out.println("target package(対象パッケージ)     = "+ clogger.getName() );
            System.out.println("File(ログファイル出力)             = "+ ra.getFile() );
        }
    }
}

上記の if (apd instanceof RollingFileAppender<ILoggingEvent> ra)は、
Java16 からのJEP 394: Pattern Matching for instanceof の書き方で書いています。
logback.xml に以下を記述した場合

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>/var/log/test.log</File>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <FileNamePattern>/var/log/test.%d{yyyy-MM-dd}.log</FileNamePattern>
        <maxHistory>12</maxHistory>
    </rollingPolicy>
    <encoder>
        <charset>UTF-8</charset>
        <Pattern>%-23d{yyyy/MM/dd HH:mm:ss.SSS} %-5p [%thread][%class#%method:%line]%m%n</Pattern>
    </encoder>
</appender>
<logger name="aaa.bbb.ccc">
    <level value="debug" />
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
</logger>

以下の標準出力結果になる。

appender-ref(アペンダリファレンス) = FILE
target package(対象パッケージ)     = aaa.bbb.ccc
File(ログファイル出力)             = /var/log/test.log

ここで、 <File>/var/log/test.log</File> を削除していていれば、
<appender> の中で書いた <rollingPolicy> の中の <FileNamePattern>
ファイルパスをFile(ログファイル出力)として、上記であれば、現在日付のファイル名で
取得することになる。

logback.xml で書いているログ出力ファイルPath だけを取得するメソッドにするなら、
参照アペンダ名と、対象クラスを指定する以下のメソッドを用意すれば良い。

public static String logfile(String appenderRefer, Class<?> cls) {
    String pkgName = cls.getPackage().getName();
    LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
    for(ch.qos.logback.classic.Logger clogger : context.getLoggerList()) {
        if (pkgName.startsWith(clogger.getName())) {
            for(Iterator<Appender<ILoggingEvent>> itr = clogger.iteratorForAppenders(); itr.hasNext();) {
                Appender<ILoggingEvent> apd = itr.next();
                if (apd instanceof RollingFileAppender<ILoggingEvent> ra) {
                    if (appenderRefer.equals(apd.getName())) {
                        return ra.getFile();
                    }
                }
            }
        }
    }
    return null;
}

return null; は、
 throw new RuntimeException("logback.xml でファイル出力アペンダが見つかりません。");
でも良いのかもしれない。