全部产品
Search
文档中心

Simple Log Service:Kumpulkan log Log4j

更新时间:Jul 06, 2025

Setelah menggunakan Log4j2 untuk mencatat dan mengelola log operasional aplikasi Java, Anda dapat menggunakan Log4j2 appender atau Logtail untuk mengumpulkan log ke Layanan Log Sederhana guna kueri dan analisis lebih lanjut.

Ikhtisar Log4j

Apache Log4j adalah proyek sumber terbuka yang memungkinkan Anda mengonfigurasi tujuan keluaran log ke konsol, file, komponen GUI, server socket, perekam acara NT, atau daemon Syslog UNIX. Apache Log4j juga memungkinkan Anda menetapkan format keluaran untuk setiap log serta mendefinisikan tingkat log untuk pengelolaan pembuatan log secara lebih rinci. Konfigurasi ini hanya memerlukan file konfigurasi tanpa perlu memodifikasi kode aplikasi. Log4j terdiri dari komponen utama berikut:

  • Layouts

    Layout digunakan untuk memformat log ke dalam format tertentu. Tabel berikut menjelaskan layout umum.

    Layout

    Deskripsi

    HTMLLayout

    Memformat log sebagai tabel HTML.

    SimpleLayout

    Memformat log ke dalam format sederhana, seperti log tingkat INFO.

    PatternLayout

    Mengeluarkan log dalam format kustom. Anda dapat menentukan susunan dan format elemen, seperti timestamp, tingkat log, nama thread, nama kelas, nama metode, dan data log.

  • Appenders

    Appender digunakan untuk menentukan tujuan log. Anda dapat mengonfigurasi beberapa appender untuk mengirim log ke tujuan yang berbeda. Tabel berikut menjelaskan appender umum.

    Appender

    Deskripsi

    ConsoleAppender

    Mengeluarkan log ke konsol.

    FileAppender

    Mengeluarkan log ke file.

    DailyRollingFileAppender

    Mengeluarkan log ke file baru setiap hari.

    RollingFileAppender

    Mengeluarkan log ke file dengan ukuran tertentu. Saat file mencapai ukuran yang ditentukan, sistem secara otomatis mengubah nama file dan menghasilkan file baru.

    JDBCAppender

    Menyimpan log ke database.

  • Loggers

    Logger digunakan untuk menentukan titik masuk log dan menangkap informasi log. Setiap Logger diberi tingkat log berdasarkan tingkat kepentingan atau keparahannya. Log4j mendefinisikan tingkat log berikut: OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, dan ALL (terdaftar dalam urutan prioritas menurun). Tingkat log dapat diwariskan. Kelas anak mencatat semua tingkat log dari kelas induk. Tabel berikut menjelaskan tingkat log.

    Tingkat log

    Deskripsi

    OFF

    Menonaktifkan semua log.

    FATAL

    Menunjukkan peristiwa kesalahan yang dapat menyebabkan aplikasi keluar.

    ERROR

    Menunjukkan peristiwa kesalahan yang tidak mempengaruhi jalannya sistem.

    WARN

    Menunjukkan potensi kesalahan.

    INFO

    Fokus pada jalannya aplikasi. Dalam banyak kasus, tingkat log ini digunakan dalam skenario di mana log dikelola secara kasar.

    DEBUG

    Membantu diagnosis. Dalam banyak kasus, tingkat log ini digunakan dalam skenario debugging aplikasi.

    TRACE

    Mengeluarkan variabel selama program berjalan dan menampilkan proses eksekusi. Tingkat log ini digunakan untuk melacak program.

    ALL

    Mencetak semua log.

Catatan

Sebuah logger dapat sesuai dengan beberapa appender. Sebuah appender hanya dapat sesuai dengan satu layout.

Prasyarat

Prosedur

Catatan

Dalam topik ini, Java dan Log4j2 digunakan dalam contoh-contohnya. Anda juga dapat menggunakan Log4j untuk program dalam bahasa pemrograman lainnya, seperti C, C++, .NET, dan PL/SQL. Sintaksis dan metode penggunaan Log4j untuk program dalam bahasa pemrograman lainnya sama dengan sintaksis dan metode penggunaan Log4j dalam program Java.

Langkah 1: Tambahkan file konfigurasi Log4j2 ke proyek

  1. Tambahkan dependensi ke proyek Maven.

    <dependencies>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.23.1</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.23.1</version>
      </dependency>
    </dependencies>
  2. Ubah file konfigurasi.

    Secara default, sistem mencari file konfigurasi di jalur classpath. Jika file konfigurasi tidak ada, Anda harus membuat file tersebut secara manual. Dalam contoh berikut, dua appender didefinisikan dalam file log4j2.xml. Appender tersebut digunakan untuk mengeluarkan log ke Simple Log Service dan file app.log, masing-masing. Tingkat log dari root logger didefinisikan sebagai ERROR, dan log dikeluarkan ke Simple Log Service. Tingkat log dari logger bernama com.example.demo.log didefinisikan sebagai WARN, dan log dikeluarkan ke file app.log. Untuk informasi lebih lanjut tentang cara mengonfigurasi Log4j2, lihat Log4j - Configuring Log4j 2 (apache.org).

    !" -- status="WARN". Status internal Log4j2. Parameter ini tidak digunakan untuk menangkap dan melaporkan masalah potensial selama konfigurasi.  -->
    <Configuration status="WARN">
        <! -- Definisikan dua appender  mulai  -->
        <Appenders>
            <! -- Definisikan appender bernama Console untuk mencetak log ke output standar sistem.  -->
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS zzz} [%t] %-5level %logger{36} - %msg%n"/>
            </Console>
            <! -- Definisikan appender bernama MyFile untuk mencetak log ke file app.log. -->
            <File name="MyFile" fileName="app.log">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS zzz} [%t] %-5level %logger{36} - %msg%n"/>
            </File>
        </Appenders>
        <! -- Definisikan dua appender   selesai  -->
    
        <!-- Konfigurasikan logger      mulai  -->
        <Loggers>
            <! -- Definisikan logger bernama com.example.demo.log dan atur tingkat log menjadi TRACE. Logger com.example.demo.log merujuk pada appender MyFile. Logger mengeluarkan log yang tingkatnya adalah TRACE dan lebih tinggi ke appender MyFile.  -->
            <Logger name="com.example.demo.log" level="warn">
                <AppenderRef ref="MyFile" />
            </Logger>
            <!-- Definisikan root logger dan atur tingkat log menjadi ERROR. Root logger merujuk pada appender Console. Logger mengeluarkan log yang tingkatnya adalah ERROR dan lebih tinggi ke konsol Simple Log Service.  -->
            <Root level="error">
                <AppenderRef ref="Console" />
            </Root>
        </Loggers>
        <!-- Konfigurasikan logger      selesai  -->
    </Configuration>
  3. Mulai mengeluarkan log.

    Tulis kode uji untuk membaca appender yang telah didefinisikan dan mengeluarkan log. Contoh kode:

        public void logExampleDemo() {
            // Dapatkan logger bernama com.example.demo.log.
            Logger logger = LogManager.getLogger("com.example.demo.log");
    
            // Catat data log pada tingkat yang berbeda.
            logger.trace("tingkat trace");
            logger.debug("tingkat debug");
            logger.info("tingkat info");
            logger.warn("tingkat warn");
            logger.error("tingkat error");
            logger.fatal("tingkat fatal");
        }
  4. Contoh kode berikut memberikan contoh keluaran log:

    2024-05-28 13:37:16:295 CST [http-nio-8080-exec-8] TRACE com.example.demo.log - tingkat trace
    2024-05-28 13:37:16:296 CST [http-nio-8080-exec-8] DEBUG com.example.demo.log - tingkat debug
    2024-05-28 13:37:16:296 CST [http-nio-8080-exec-8] INFO  com.example.demo.log - tingkat info
    2024-05-28 13:37:16:296 CST [http-nio-8080-exec-8] WARN  com.example.demo.log - tingkat warn
    2024-05-28 13:37:16:296 CST [http-nio-8080-exec-8] ERROR com.example.demo.log - tingkat error
    2024-05-28 13:37:16:296 CST [http-nio-8080-exec-8] FATAL com.example.demo.log - tingkat fatal

Langkah 2: Kumpulkan log Log4j ke Simple Log Service

Catatan
  • Log4j2 appender adalah metode pengumpulan log bawaan dari Log4j2. Untuk aplikasi yang terintegrasi dengan Log4j2, Anda hanya perlu melakukan konfigurasi sederhana untuk memulai appender mengirim log secara real-time. Log4j2 appender cocok untuk skenario di mana sejumlah besar data log perlu diproses secara real-time.

  • Untuk menggunakan Logtail mengumpulkan log, Anda harus menginstal komponen Logtail di server. Komponen Logtail mendukung beberapa plugin pemrosesan.

Gunakan Log4j2 appender untuk mengumpulkan log Log4j

  1. Tambahkan dependensi ke proyek Maven.

    <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
        <version>2.5.0</version>
    </dependency>
    <dependency>
        <groupId>com.aliyun.openservices</groupId>
        <artifactId>aliyun-log-log4j2-appender</artifactId>
        <version>0.1.12</version>
    </dependency>
  2. Ubah file konfigurasi.

    Dalam contoh berikut, file konfigurasi XML bernama log4j2.xml digunakan untuk mengonfigurasi appender dan logger terkait LogHub. Jika file konfigurasi tidak ada, buat file tersebut di direktori root proyek. Contoh kode:

    <Appenders>
        <Loghub name="Loghub"
                project="proyek Anda"
                logStore="logstore Anda"
                endpoint="endpoint proyek Anda"
                accessKeyId="ID AccessKey Anda"
                accessKeySecret="rahasia AccessKey Anda"
                totalSizeInBytes="104857600"
                maxBlockMs="0"
                ioThreadCount="8"
                batchSizeThresholdInBytes="524288"
                batchCountThreshold="4096"
                lingerMs="2000"
                retries="10"
                baseRetryBackoffMs="100"
                maxRetryBackoffMs="100"
                topic="topik Anda"
                source="sumber Anda"
                timeFormat="yyyy-MM-dd'T'HH:mmZ"
                timeZone="UTC"
                ignoreExceptions="true">
            <PatternLayout pattern="%d %-5level [%thread] %logger{0}: %msg"/>
        </Loghub>
    </Appenders>
    <Loggers>
        <Root level="warn">
            <AppenderRef ref="Loghub"/>
        </Root>
    </Loggers>

    Dalam contoh kode di atas, parameter project, logStore, endpoint, accessKeyId, dan accessKeySecret wajib. Parameter lainnya opsional, dan Anda dapat menggunakan nilai default. Tabel berikut menjelaskan parameter-parameter tersebut.

    Parameter

    Deskripsi

    project

    Nama proyek Simple Log Service.

    logStore

    Nama penyimpanan log Simple Log Service.

    endpoint

    Endpoint publik Simple Log Service. Untuk informasi tentang cara mendapatkan endpoint, lihat Endpoints.

    accessKeyId

    ID AccessKey. Untuk informasi tentang cara mendapatkan ID AccessKey, lihat Buat pasangan AccessKey.

    accessKeySecret

    Rahasia AccessKey. Untuk informasi tentang cara mendapatkan rahasia AccessKey, lihat Buat pasangan AccessKey.

  3. Uji demo.

    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    public class Log4j2AppenderExample {
    
        private static final Logger LOGGER = LogManager.getLogger(Log4j2AppenderExample.class);
    
        public static void main(String[] args) throws InterruptedException {
            LOGGER.trace("log4j2 log tingkat trace");
            LOGGER.debug("log4j2 log tingkat debug");
            LOGGER.info("log4j2 log tingkat info");
            LOGGER.warn("log4j2 log tingkat warn");
            LOGGER.error("log4j2 log tingkat error", new RuntimeException("Pengecualian Runtime"));
            Thread.sleep(1000 * 5);
        }
    }

Gunakan Logtail untuk mengumpulkan log Log4j

Penting

Saat mengonfigurasi Logtail, Anda harus menyediakan jalur file. Pastikan log aplikasi dapat ditulis ke file log sesuai harapan.

Simple Log Service menyediakan wizard konfigurasi untuk membantu Anda mengonfigurasi Logtail. Jika instance Elastic Compute Service (ECS) dan proyek Simple Log Service berada di bawah akun dan wilayah yang sama, lihat Instalasi otomatis Logtail untuk mengumpulkan log teks dari server. Jika tidak, lihat Instalasi manual Logtail untuk mengumpulkan log teks dari server.

Langkah 3: Lihat log

  1. Masuk ke Konsol Simple Log Service.

  2. Di bagian Proyek, klik yang ingin Anda kelola.

    image

  3. Pada tab Log Storage > Logstores, klik logstore yang ingin Anda kelola.

    image

  4. Periksa apakah log telah diunggah ke logstore. Panduan untuk pencarian dan analisis log di logstore. Kemudian, klik Consumption Preview untuk melihat log.

    image

  5. Cari dan analisis log

    Penting

    Setelah log diunggah ke logstore, Anda harus membuat indeks untuk mencari dan menganalisis log. Untuk informasi lebih lanjut, lihat Buat indeks. Untuk informasi tentang cara membuat indeks, lihat Buat indeks.

    Masukkan pernyataan pencarian di kotak pencarian, klik Last 15 Minutes, lalu tentukan rentang waktu pencarian.

    Contoh kode berikut memberikan contoh log:

    tingkat: ERROR
    lokasi: com.aliyun.openservices.log.log4j.example.Log4jAppenderExample.main(Log4jAppenderExample.java:16)
    pesan: log error
    pengecualian: java.lang.RuntimeException: xxx
    thread: main
    waktu: 2018-01-02T03:15+0000
    log: 0 [main] ERROR com.aliyun.openservices.log.log4j.example.Log4jAppenderExample - log error
    __source__: xxx
    __topic__: yyy

    Cari dan analisis log di halaman logstore.

    image

    Anda dapat memasukkan pernyataan pencarian untuk melihat, mencari, dan memfilter data log. Untuk informasi lebih lanjut, lihat Cari dan analisis log. Pernyataan berikut disediakan sebagai contoh.

    • Cari tiga lokasi tempat kesalahan paling banyak terjadi dalam satu jam terakhir.

      tingkat: ERROR | select lokasi ,count(*) as jumlah GROUP BY lokasi ORDER BY jumlah DESC LIMIT 3
    • Cari jumlah log di setiap tingkat log yang dihasilkan dalam 15 menit terakhir.

      | select tingkat ,count(*) as jumlah GROUP BY tingkat ORDER BY jumlah DESC

Referensi