All Products
Search
Document Center

Simple Log Service:,

Last Updated:Aug 27, 2026

Anda dapat menggunakan appender Log4j2 atau Logtail untuk mengumpulkan log aplikasi Java yang direkam oleh Log4j2 dan mengirimkannya ke Simple Log Service guna kueri dan analisis.

Ikhtisar Log4j

Log4j adalah proyek open source Apache yang memungkinkan Anda mengonfigurasi tujuan log seperti console, file, komponen GUI, server socket, perekam event NT, dan daemon Syslog UNIX. Anda dapat mengontrol format output setiap entri log dan menyesuaikan pencatatan log secara detail dengan menentukan tingkat log—semuanya melalui file konfigurasi tanpa mengubah kode aplikasi. Log4j terdiri dari tiga komponen:

  • layouts

    Layout memformat pesan log. Layout umum meliputi:

    Layout

    Description

    HTMLLayout

    Memformat log sebagai tabel HTML.

    SimpleLayout

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

    PatternLayout

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

  • appenders

    Appender menentukan tujuan output log. Appender umum meliputi:

    Appender

    Description

    ConsoleAppender

    Mengeluarkan log ke console.

    FileAppender

    Mengeluarkan log ke file.

    DailyRollingFileAppender

    Mengeluarkan log ke file dan membuat file log baru setiap hari.

    RollingFileAppender

    Mengeluarkan pesan log ke file hingga ukuran tertentu. Saat file mencapai batas ukuran, file tersebut diganti namanya dan file baru dibuat.

    JDBCAppender

    Menyimpan pesan log ke database.

  • loggers

    Logger menangkap pesan log dan berfungsi sebagai titik masuk untuk pencatatan log. Setiap logger diberi tingkat log berdasarkan tingkat kepentingan atau keparahan. Log4j mendefinisikan delapan tingkat log dalam urutan prioritas menurun: OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, dan ALL. Logger anak mewarisi tingkat log dari induknya. Tabel berikut menjelaskan tingkat log tersebut.

    Log level

    Description

    OFF

    Menonaktifkan semua pencatatan log.

    FATAL

    Menunjukkan event error parah yang akan menyebabkan aplikasi keluar.

    ERROR

    Menunjukkan event error yang mungkin masih memungkinkan sistem terus berjalan.

    WARN

    Menunjukkan situasi yang berpotensi berbahaya.

    INFO

    Menyoroti perkembangan aplikasi pada tingkat kasar.

    DEBUG

    Memberikan informasi detail yang berguna untuk debugging aplikasi.

    TRACE

    Menelusuri eksekusi program, menampilkan variabel, dan menunjukkan alur eksekusi.

    ALL

    Mencetak semua catatan log.

Catatan

Logger dapat dikaitkan dengan beberapa appender, tetapi appender hanya dapat dikaitkan dengan satu layout.

Prasyarat

Prosedur

Catatan

Contoh dalam topik ini menggunakan Java dan Log4j2. Anda juga dapat menggunakan Log4j untuk program dalam bahasa lain, seperti C, C++, .NET, dan PL/SQL. Sintaks dan penggunaannya sama seperti di Java.

Langkah 1: Tambahkan file konfigurasi Log4j2

  1. Tambahkan dependensi 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 file tidak ada, buat secara manual. Contoh berikut menggunakan log4j2.xml. Dua appender didefinisikan untuk mengeluarkan log ke console dan file app.log. Tingkat logger root diatur ke error dengan output ke console. Logger bernama com.example.demo.log diatur ke warn dengan output ke file. Untuk informasi lebih lanjut tentang mengonfigurasi Log4j2, lihat dokumentasi resmi di Log4j – Configuring Log4j 2 (apache.org).

    <!-- status="WARN" mengatur status internal Log4j 2 itu sendiri, bukan logging aplikasi. Digunakan untuk menangkap dan melaporkan potensi masalah selama proses konfigurasi. -->
    <Configuration status="WARN">
        <!-- Start: Definisikan dua appender untuk output log -->
        <Appenders>
            <!-- Mendefinisikan appender console bernama "Console". Log dicetak ke output sistem standar. -->
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss:SSS zzz} [%t] %-5level %logger{36} - %msg%n"/>
            </Console>
            <!-- Mendefinisikan appender file bernama "MyFile". Log ditulis 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>
        <!-- End: Definisikan dua appender untuk output log -->
        <!-- Start: Konfigurasikan perilaku logger -->
        <Loggers>
            <!-- Mendefinisikan logger bernama "com.example.demo.log" dan mengatur tingkatnya ke warn. Logger ini mereferensikan appender "MyFile", artinya log pada tingkat warn ke atas dari logger ini dikirim ke "MyFile". -->
            <Logger name="com.example.demo.log" level="warn">
                <AppenderRef ref="MyFile" />
            </Logger>
            <!-- Mendefinisikan logger root dan mengatur tingkatnya ke error. Logger ini mereferensikan appender "Console", artinya log pada tingkat error ke atas dikirim ke console. -->
            <Root level="error">
                <AppenderRef ref="Console" />
            </Root>
        </Loggers>
        <!-- End: Konfigurasikan perilaku logger -->
    </Configuration>
  3. Gunakan logger.

    Tulis kode uji untuk mendapatkan instance logger dan menghasilkan log:

        public void logExampleDemo() {
            // Dapatkan instance logger bernama "com.example.demo.log".
            Logger logger = LogManager.getLogger("com.example.demo.log");
            // Catat pesan log pada berbagai tingkat.
            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 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
  • Appender Log4j2 adalah metode pengumpulan bawaan. Untuk aplikasi yang sudah terintegrasi dengan Log4j2, hanya diperlukan konfigurasi minimal untuk mengirim log secara real time tanpa menuliskannya ke disk server. Metode ini cocok untuk aplikasi data besar yang memerlukan pemrosesan real time terhadap volume log yang besar.

  • Untuk mengumpulkan log menggunakan Logtail, Anda harus menginstal agen Logtail di server Anda. Agen Logtail mendukung berbagai plugin pemrosesan.

Melalui Log4j2 appender

  1. Tambahkan dependensi 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 log4j2.xml. Jika file tidak ada, buat di direktori root proyek. Konfigurasikan appender dan logger Loghub sebagai berikut:

    <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 Project Anda di Simple Log Service.

    Logstore

    Nama Logstore Anda di Simple Log Service.

    endpoint

    Titik akhir publik untuk Simple Log Service. Untuk informasi lebih lanjut, lihat Service endpoint.

    accessKeyId

    ID AccessKey. Untuk informasi lebih lanjut, lihat Create an AccessKey.

    accessKeySecret

    Rahasia AccessKey. Untuk informasi lebih lanjut, lihat Create an AccessKey.

  3. Contoh kode uji:

    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);
        }
    }

Melalui Logtail

Penting

Saat mengonfigurasi Logtail, Anda harus menentukan path file. Pastikan log aplikasi dapat ditulis ke file log.

Simple Log Service menyediakan wizard konfigurasi untuk pengumpulan log teks cepat menggunakan Logtail. Jika instance ECS dan Project Simple Log Service Anda berada di bawah akun yang sama dan di wilayah yang sama, lihat Collect text logs from servers. Jika tidak, lihat Manually install Logtail to collect text logs from servers.

Langkah 3: Lihat log

  1. Masuk ke Konsol Simple Log Service.

  2. Pada bagian Projects, klik Project yang diinginkan.

    image

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

    image

  4. Verifikasi bahwa data log telah diunggah. Di Logstore, klik Consumption Preview untuk melihat log secara cepat. Untuk informasi lebih lanjut, lihat Query and analysis quick start.

  5. Kueri dan analisis log.

    Penting

    Setelah log diunggah ke Logstore, Anda harus membuat indeks sebelum dapat melakukan kueri dan analisis. Untuk informasi tentang konfigurasi indeks, lihat Create indexes.

    Masukkan pernyataan kueri, lalu klik Last 15 Minutes untuk menentukan rentang waktu. Berikut contoh 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

    Kueri dan analisis log pada halaman Logstore.

    Masukkan pernyataan kueri untuk melihat, mencari, dan memfilter data log. Untuk informasi lebih lanjut, lihat Query and analyze logs. Contoh:

    • Kueri 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

Pemecahan Masalah

Jika pengumpulan log gagal setelah Anda mengonfigurasi appender Log4j2, periksa penyebab umum berikut.

1. Pemilihan dependensi

Spring Boot menggunakan Logback secara default. Jika aplikasi Anda menggunakan Spring Boot, tambahkan dependensi aliyun-log-logback-appender alih-alih appender Log4j2. Jika aplikasi Anda menggunakan Log4j2, gunakan dependensi aliyun-log-log4j2-appender.

2. Konfigurasi endpoint

Pastikan Anda telah mengonfigurasi titik akhir publik yang benar, seperti cn-hangzhou.log.aliyuncs.com.

3. Izin ID AccessKey dan rahasia AccessKey

Pastikan Pengguna Resource Access Management (RAM) diberikan izin AliyunLogFullAccess atau izin menulis pada LogStore target.

4. Nama Project dan LogStore

Pastikan nama Project dan LogStore dalam konfigurasi Anda sesuai dengan nama yang ditampilkan di Konsol Simple Log Service.

Dokumen Terkait

  • Untuk mempelajari cara menggunakan Logtail mengumpulkan log dari server, lihat Collect text logs from servers. Berbagai plugin tersedia untuk pemrosesan. Untuk informasi lebih lanjut, lihat Data parsing plugins.

  • Jika halaman pratinjau kosong atau tidak ada data yang muncul di halaman kueri setelah menggunakan Logtail untuk mengumpulkan log, lihat Troubleshoot Logtail collection errors. Kesalahan seperti kegagalan parsing regex, path file salah, atau traffic melebihi kapasitas shard dapat terjadi. Untuk melihat kesalahan pengumpulan Logtail, lihat How do I view Logtail collection errors?. Untuk kesalahan pengumpulan data umum, lihat Common collection errors.

  • Untuk kasus penggunaan dan pertanyaan umum (FAQ) tentang mengumpulkan log Log4j dengan appender Log4j2, lihat Log4j2 Appender. Untuk versi sebelumnya, lihat Log4j Appender.

  • Saat menggunakan appender Log4j2 untuk mengumpulkan log Log4j, Anda harus mengonfigurasi accessKeyId dan accessKeySecret Anda. Untuk informasi cara memperolehnya, lihat Create an AccessKey. Untuk mengonfigurasi titik akhir Simple Log Service, lihat Service endpoint.