كيفية استخدام «Logback» لكتابة السجلات إلى التخزين الثابت المخصص

إشعار

سيتم إهمال الخطط الأساسية والقياسية والمؤسسة بدءا من منتصف مارس 2025، مع فترة تقاعد 3 سنوات. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع إعلان إيقاف Azure Spring Apps.

سيتم إهمال الاستهلاك القياسي والخطة المخصصة بدءا من 30 سبتمبر 2024، مع إيقاف التشغيل الكامل بعد ستة أشهر. نوصي بالانتقال إلى Azure Container Apps. لمزيد من المعلومات، راجع ترحيل استهلاك Azure Spring Apps القياسي وخطة مخصصة إلى Azure Container Apps.

هذه المقالة تنطبق على: ✔️ Java ❌ C#‎

تنطبق هذه المقالة على: ✔️ Basic/Standard ✔️ Enterprise

توضح لك هذه المقالة كيفية تحميل «Logback» وكتابة السجلات إلى التخزين الثابت المخصص في Azure Spring Apps.

إشعار

عندما يحتوي ملف في مسار فئة التطبيق على أحد الأسماء الآتية، سيقوم Spring Boot تلقائيًا بتحميله عبر التكوين الافتراضي لـ«Logback»:

  • logback-spring.xml
  • logback.xml
  • logback-spring.groovy
  • logback.groovy

المتطلبات الأساسية

تحرير تكوين «Logback» لكتابة السجلات في مسار معين

بإمكانك تعيين المسار إلى حيث ستتم كتابة السجلات باستخدام ملف المثال logback-spring.xml.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="Console"
              class="ch.qos.logback.core.ConsoleAppender">
        <!-- please feel free to customize the log layout -->
        <layout class="ch.qos.logback.classic.PatternLayout">
            <Pattern>
                %black(%d{ISO8601}) %highlight(%-5level) [%blue(%t)] %yellow(%C{1.}): %msg%n%throwable
            </Pattern>
        </layout>
    </appender>

    <appender name="RollingFile"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 'LOGS' here is a value to be read from the application's environment variable -->
        <file>${LOGS}/spring-boot-logger.log</file>
        <!-- please feel free to customize the log layout pattern -->
        <encoder
                class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <Pattern>%d %p %C{1.} [%t] %m%n</Pattern>
        </encoder>

        <rollingPolicy
                class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- rollover daily and when the file reaches 10 MegaBytes -->
            <fileNamePattern>${LOGS}/archived/spring-boot-logger-%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <!-- LOG everything at the INFO level -->
    <root level="info">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </root>

    <!-- LOG "com.baeldung*" at the TRACE level -->
    <logger name="com.baeldung" level="trace" additivity="false">
        <appender-ref ref="RollingFile" />
        <appender-ref ref="Console" />
    </logger>

</configuration>

وفي المثال السابق، يوجد عنصران نائبان مسميان {LOGS} في المسار لكتابة سجلات التطبيق إليه. يجب تعيين قيمة إلى متغير البيئة LOGS لكتابة السجل إلى كل من وحدة التحكم والتخزين المستمر.

استخدم Azure CLI لإنشاء تطبيق جديد ونشره باستخدام «Logback» على التخزين المستمر

  1. استخدم الأمر التالي لإنشاء تطبيق في Azure Spring Apps مع تمكين التخزين المستمر ومجموعة متغير البيئة:

    az spring app create \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --persistent-storage <path-to-json-file> \
         --env LOGS=/byos/logs
    

    إشعار

    يمكن أن تظل قيمة متغير البيئة LOGS هي نفسها، أو دليل فرعي لـmountPath.

    إليك مثال على ملف JSON الذي يتم تمريره إلى المعلمة --persistent-storage في الأمر إنشاء. وفي هذا المثال، يتم تمرير نفس القيمة لمتغير البيئة في الأمر CLI أعلاه وفي الخاصية mountPath أدناه:

    {
        "customPersistentDisks": [
            {
                "storageName": "<Storage-Resource-Name>",
                "customPersistentDiskProperties": {
                    "type": "AzureFileVolume",
                    "shareName": "<Azure-File-Share-Name>",
                    "mountPath": "/byos/logs",
                    "readOnly": false
                }
            }
        ]
    }
    
  2. استخدم الأمر التالي لنشر تطبيقك الخاص:

    az spring app deploy \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --artifact-path <path-to-jar-file>
    
  3. استخدم الأمر التالي للتحقق من سجل وحدة تحكم تطبيقك الخاص:

    az spring app logs \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name>
    

    انتقل إلى مورد حساب تخزين Azure الذي قمت بربطه وقم بالبحث عن مشاركة ملف Azure التي تم إرفاقها كمساحة تخزين ثابتة. وفي هذا المثال، ستتم كتابة السجلات إلى ملف spring-boot-logger.log في جذر مشاركة ملف Azure. سوف يتم تخزين جميع ملفات السجل التي تم تدويرها في المجلد /archived في مشاركة ملف Azure.

  4. اختياريًا، استخدم الأمر التالي لتحديث المسار أو التخزين المستمر لتطبيق موجود:

    يمكن تغيير المسار أو التخزين المستمر حيث تُحفظ السجلات في أي وقت. سوف تتم إعادة تشغيل التطبيق عند إجراء تغييرات على متغيرات البيئة أو التخزين المستمر.

    az spring app update \
         --resource-group <resource-group-name> \
         --name <app-name> \
         --service <spring-instance-name> \
         --persistent-storage <path-to-new-json-file> \
         --env LOGS=<new-path>
    

الخطوات التالية