All Products
Search
Document Center

Simple Log Service:Kumpulkan log Log4j

Last Updated:Mar 26, 2026

Setelah menggunakan Log4j2 untuk mengelola log waktu proses aplikasi Java Anda, Anda dapat menggunakan appender Log4j2 atau Logtail untuk mengirimnya ke Simple Log Service guna dianalisis.

Ikhtisar Log4j

Log4j adalah proyek open-source dari Apache. Dengan Log4j, Anda dapat mengonfigurasi tujuan log, seperti console, file, komponen GUI, server Socket, NT Event Logger, dan daemon UNIX Syslog. Anda juga dapat mengontrol format output setiap pesan log. Dengan menentukan tingkat untuk setiap pesan log, Anda dapat mengontrol proses pembuatan log secara lebih rinci. Pengaturan ini dapat dikonfigurasi secara fleksibel dalam file konfigurasi tanpa perlu mengubah kode aplikasi. Log4j terdiri dari tiga komponen penting berikut:

  • Layouts

    Layout memformat pesan log. Tabel berikut menjelaskan layout umum.

    Layout

    Description

    HTMLLayout

    Memformat output log sebagai tabel HTML.

    SimpleLayout

    Menerapkan format output sederhana, seperti format default untuk pesan tingkat INFO.

    PatternLayout

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

  • Appenders

    Appender mengirim pesan log ke tujuan tertentu. Anda dapat mengonfigurasi beberapa appender untuk mengirim log ke berbagai tujuan. Tabel berikut menjelaskan appender umum.

    Appender

    Description

    ConsoleAppender

    Menulis log ke console.

    FileAppender

    Menulis log ke file.

    DailyRollingFileAppender

    Menulis log ke file dan berganti ke file baru setiap hari.

    RollingFileAppender

    Saat ukuran file mencapai batas yang ditentukan, Log4j akan mengganti namanya dan membuat file baru.

    JDBCAppender

    Menyimpan pesan log ke database.

  • Loggers

    Logger menangkap informasi log. Setiap logger diberi tingkat log berdasarkan tingkat kepentingan atau keparahannya. Log4j mendefinisikan delapan tingkat log, yang diurutkan dari prioritas tertinggi ke terendah: OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, dan ALL. Tingkat log bersifat turun-temurun, artinya logger anak mewarisi semua tingkat log dari induknya. Tabel berikut menjelaskan setiap tingkat log.

    Log level

    Description

    OFF

    Menonaktifkan semua logging.

    FATAL

    Menunjukkan error parah yang menyebabkan aplikasi keluar.

    ERROR

    Menunjukkan error yang tidak menghentikan aplikasi.

    WARN

    Memberi peringatan terhadap potensi error.

    INFO

    Memantau perkembangan aplikasi pada tingkat tinggi.

    DEBUG

    Memberikan informasi detail untuk debugging.

    TRACE

    Memberikan informasi detail untuk melacak eksekusi program, seperti nilai variabel dan alur eksekusi.

    ALL

    Mengaktifkan semua tingkat log.

Catatan

Sebuah logger dapat dikaitkan dengan beberapa appender, tetapi sebuah appender hanya dapat dikaitkan dengan satu layout.

Prasyarat

Prosedur

Catatan

Topik ini menggunakan bahasa Java dan Log4j2 sebagai contoh. Anda dapat menggunakan antarmuka Log4j untuk bahasa lain, seperti C, C++, .NET, dan PL/SQL. Sintaks dan penggunaannya mirip dengan Java.

Langkah 1: Konfigurasikan Log4j2

  1. Tambahkan dependensi yang diperlukan ke proyek Maven Anda.

    <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, Log4j2 mencari file konfigurasi di classpath. Jika tidak ada, Anda harus membuatnya secara manual. Contoh berikut menunjukkan file log4j2.xml yang mendefinisikan dua appender untuk mengeluarkan log ke console dan file bernama app.log. Logger root diatur ke tingkat log error dan mengeluarkan output ke console. Logger bernama com.example.demo.log diatur ke tingkat log trace dan mengeluarkan output ke file. Untuk informasi selengkapnya tentang cara mengonfigurasi Log4j2, lihat dokumentasi resmi Log4j 2 Configuration.

    <!-- status="WARN" sets the internal status of Log4j 2 itself, not the application logging. It is used to capture and report potential issues during the configuration process. -->
    <Configuration status="WARN">
        <!-- Define two log output destinations (Appenders) start -->
        <Appenders>
            <!-- Defines a console appender named "Console" that prints logs to the standard system output. -->
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS zzz} [%t] %-5level %logger{36} - %msg%n"/>
            </Console>
            <!--  Defines a file appender named "MyFile" that writes logs to the "app.log" file. -->
            <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>
        <!-- Define two log output destinations (Appenders) end -->
    
        <!-- Configure logging behavior (Loggers) start -->
        <Loggers>
            <!-- Defines a logger named "com.example.demo.log" with its level set to "trace". It references the "MyFile" appender, which means this logger outputs logs at the "trace" level and above to its appender ("MyFile"). -->
            <Logger name="com.example.demo.log" level="trace">
                <AppenderRef ref="MyFile" />
            </Logger>
            <!-- Defines the root logger with its level set to "error". It references the "Console" appender, which means logs at the "error" level and above are output to the console. -->
            <Root level="error">
                <AppenderRef ref="Console" />
            </Root>
        </Loggers>
        <!-- Configure logging behavior (Loggers) end -->
    </Configuration>
  3. Penggunaan dasar.

    Tulis kode contoh untuk membaca appender yang telah didefinisikan dan mengeluarkan log:

        public void logExampleDemo() {
            // Get a Logger instance named "com.example.demo.log".
            Logger logger = LogManager.getLogger("com.example.demo.log");
    
            // Record log messages at different levels.
            logger.trace("trace level");
            logger.debug("debug level");
            logger.info("info level");
            logger.warn("warn level");
            logger.error("error level");
            logger.fatal("fatal level");
        }
  4. Contoh berikut menunjukkan output log.

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

Langkah 2: Kumpulkan log Log4j

Catatan
  • Jika aplikasi Anda sudah menggunakan Log4j2, Anda dapat mengonfigurasi appender untuk mengirim log secara real time tanpa menuliskannya ke disk.

  • Logtail adalah agen yang Anda instal di server untuk mengumpulkan log dari file. Logtail juga mendukung berbagai plugin pemrosesan.

Log4j2 appender

image
  1. Tambahkan dependensi yang diperlukan ke proyek Maven Anda.

    <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.

    Contoh berikut menggunakan file konfigurasi XML bernama log4j2.xml. Jika file tersebut tidak ada, buat di direktori root proyek Anda. Konfigurasikan appender dan logger Loghub:

    <Appenders>
        <Loghub name="Loghub"
                project="your project"
                logStore="your logStore"
                endpoint="your project endpoint"
                accessKeyId="your accessKey id"
                accessKeySecret="your accessKey secret"
                totalSizeInBytes="104857600"
                maxBlockMs="0"
                ioThreadCount="8"
                batchSizeThresholdInBytes="524288"
                batchCountThreshold="4096"
                lingerMs="2000"
                retries="10"
                baseRetryBackoffMs="100"
                maxRetryBackoffMs="100"
                topic="your topic"
                source="your source"
                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>

    Parameter project, logStore, endpoint, accessKeyId, dan accessKeySecret wajib diisi. Parameter opsional menggunakan nilai default jika tidak ditentukan. Tabel berikut menjelaskan parameter tersebut.

    Parameter

    Description

    project

    Nama proyek Simple Log Service Anda.

    logStore

    Nama logstore Anda di Simple Log Service.

    endpoint

    Titik akhir publik Simple Log Service. Untuk informasi selengkapnya, lihat Endpoints.

    accessKeyId

    ID AccessKey Anda. Untuk mendapatkannya, lihat Create an AccessKey pair.

    accessKeySecret

    Rahasia AccessKey Anda. Untuk mendapatkannya, lihat Create an AccessKey pair.

  3. Kode contoh.

    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 trace log");
            LOGGER.debug("log4j2 debug log");
            LOGGER.info("log4j2 info log");
            LOGGER.warn("log4j2 warn log");
            LOGGER.error("log4j2 error log", new RuntimeException("Runtime Exception"));
            Thread.sleep(1000 * 5);
        }
    }

Logtail

image
Penting

Saat mengonfigurasi Logtail, Anda harus memberikan path file. Pastikan aplikasi Anda dapat menulis log ke file log tersebut.

Jika instans Elastic Compute Service (ECS) dan proyek Simple Log Service Anda berada dalam akun dan wilayah yang sama, lihat Collect text logs from servers. Untuk skenario lainnya, lihat Manually install Logtail to collect text logs from servers.

Langkah 3: Lihat log

  1. Masuk ke Simple Log Service console.

  2. Pada bagian Projects, klik proyek yang diinginkan.

    image

  3. Pada tab Log Storage > Logstores, klik logstore yang diinginkan.

    image

  4. Verifikasi bahwa data log berhasil diunggah. Di logstore, lihat Quick start for search and analysis, lalu klik Consumption Preview untuk melihat log dengan cepat.

    image

  5. Lakukan kueri dan analisis log.

    Penting

    Sebelum dapat melakukan kueri dan analisis log, Anda harus membuat indeks untuk logstore. Untuk informasi selengkapnya tentang cara membuat indeks, lihat Create indexes.

    Masukkan pernyataan kueri dan pilih rentang waktu, misalnya Last 15 Minutes. Contoh berikut menunjukkan entri log.

    level: ERROR
    location: com.aliyun.openservices.log.log4j.example.Log4jAppenderExample.main(Log4jAppenderExample.java:16)
    message: error log
    throwable: java.lang.RuntimeException: xxx
    thread: main
    time: 2018-01-02T03:15+0000
    log: 0 [main] ERROR com.aliyun.openservices.log.log4j.example.Log4jAppenderExample - error log
    __source__: xxx
    __topic__: yyy

    Lakukan kueri dan analisis log pada halaman logstore.

    image

    Anda dapat memasukkan pernyataan kueri untuk melihat, mencari, dan memfilter data log. Untuk informasi selengkapnya, lihat Query and analyze logs. Contoh berikut menunjukkan pernyataan kueri sederhana:

    • Cari tiga lokasi teratas dengan error terbanyak dalam satu jam terakhir.

      level: ERROR | select location ,count(*) as count GROUP BY  location  ORDER BY count DESC LIMIT 3
    • Hitung jumlah log untuk setiap tingkat log dalam 15 menit terakhir.

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

Topik terkait