program pembaca file log apache server pada aplikasi WAMP part[1]

πŸ™‚πŸ˜€

Daftar Materi Java

kali ini kita akan membuat program yang dapat membaca file sebuah log dari apache server. sebenarnya program ini hanya membaca String dari file dan memecah – mecah String menjadi substring – substring baru. banyak cara untuk menyelesaikan masalah ini namun saya memilih untuk menggunakan token agar mudah dipahami saja, bisa saja kita pakai Split atau SubString.

aplikasi ini seperti biasa, pada pelajaran – pelajaran sebelumnya jika kita hendak membuat sebuah aplikasi sebaiknya buatlah kode untuk Logic dan untuk tampilan secara terpisah. kode untuk tampilan ya untuk mengurusi tampilan saja tak perlu mengurusi logic / control dari aplikasi. pada pertemuan pertama ini saya akan membuat :

  1. membuat database
  2. Project
  3. Kelas Logic

pembuatan database dimaksudkan untuk menyimpan log dari log yang berupa file.Β  setelah String dari file log di baca lalu dipecah menjadi beberapa substring dan tiap substring dijadikan atribut pada sebuah entitas dalam database, entitas itu adalah log. mari kita buat databasenya.

    • Buat database pada sebuah database server (saya menggunakan MySQL), beri nama “menjar” dan eksekusilah query berikut
CREATE TABLE `logid` (
  `id` int(11) NOT NULL auto_increment,
  `ip` varchar(20) NOT NULL,
  `waktu` varchar(100) NOT NULL,
  `tipe_aksi` varchar(10) NOT NULL,
  `lokasi` text NOT NULL,
  `status` varchar(5) NOT NULL,
  `ukuran` varchar(10) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 ;

jika anda bingung silahkan lihat materi sebelumnya membuat database MySQL di WAMP semoga bisa membantu. heheπŸ™‚
untuk Kelas tampilan akan saya coba buat di pertemuan ke dua, karena saat saya menulis ini saya sedang dalam keadaan ngantuk beratπŸ™‚ hehe abis terjebak hujan di perpustakaan UNS dan pulang hujan – hujanan malem – malem. hehe baiklah kita akan langsung menuju TEEKAAPEE

  • Membuat Project, dengan netbeans buatlah sebuah project dengan nama ReadLog. klik link membuat project jika anda belum bisaπŸ™‚
  • Membuat Kelas Logic, buatlah sebuah kelas dalam project ReadLog dengan nama “ReadTextLog” . berikut ini kodenya
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.StringTokenizer;

/**
 *
 * @author lahardi alkawero
 */
public class ReadTextLog {

  String filePath = "";
  File logFile;
  Connection konek;
  String url = "jdbc:mysql://localhost:3306/menjar";
  String user = "alka"; // silahkan disesuaikan
  String password = "alka"; // silahkan disesuaikan
  BufferedReader br;

  public boolean cekFile() {
    boolean result = false;
    logFile = new File(filePath);
    if (logFile.exists()) {
      result = true;
    }
    return result;

  }

  public void cekDriver() {

    try {
      Class.forName("com.mysql.jdbc.Driver");
      System.out.println("driver ok");

    } catch (ClassNotFoundException ex) {
      System.out.println("driver tidak ada");
    }

  }

  public boolean konek() {
    boolean result = false;
    try {
      konek = DriverManager.getConnection(url, user, password);
      result = true;
    } catch (SQLException ex) {
      System.out.println("konek gagal");
    }
    return result;
  }

  public boolean inputToDataBase() {
    boolean result = false;
    StringTokenizer st;
    String sql = "insert into logid (ip,waktu,tipe_aksi,lokasi,status,ukuran) values(?,?,?,?,?,?)";

    //StringTokenizer token = new StringTokenizer(user)
    try {
      br = new BufferedReader(new FileReader(logFile));
      PreparedStatement ps = konek.prepareStatement(sql);
      String a = "";
      String s1 = "";
      String s2 = "";
      String s3 = "";
      String s4 = "";
      String s5 = "";
      String s6 = "";
      String s7 = "";
      String s8 = "";
      int i = 0;
      do {
        a = br.readLine();
        if (a != null) {
          boolean notAllowed = a.contains(".png") ||
                  a.contains(".jpg") || (a.contains(".gif")) ||
                  a.contains("404") || a.contains(".wmv") ||
                  a.contains(".mp4") || a.contains(".mkv");
          if (a.length() > 20 && !notAllowed) {

            st = new StringTokenizer(a, "[ \"");
            if (st.hasMoreTokens()) {
              s1 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              st.nextToken();
            }
            if (st.hasMoreTokens()) {
              st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s2 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s3 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s4 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s5 = st.nextToken();
            }

            if (st.hasMoreTokens()) {
              s6 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s7 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s8 = st.nextToken();
            }
            ps.setString(1, s1);
            ps.setString(2, s2);
            ps.setString(3, s4);
            ps.setString(4, s5);
            ps.setString(5, s7);
            ps.setString(6, s8);
            ps.addBatch();

          }

          i++;
        }

      } while (a != null);
      ps.executeBatch();
      result = true;
    } catch (IOException ex) {
      System.out.println("cetakIsiFile " + ex.getMessage());
    } catch (SQLException se) {
      System.out.println("kesalahan saat koneksi ke database");
    }
    return result;
  }

  public ArrayList bacaFile() {
    ArrayList<String[]> lis = new ArrayList<String[]>();
    StringTokenizer st;
    try {
      br = new BufferedReader(new FileReader(logFile));
      String a = "";
      String s1 = "";
      String s2 = "";
      String s3 = "";
      String s4 = "";
      String s5 = "";
      String s6 = "";
      String s7 = "";
      String s8 = "";
      int i = 1;
      do {
        a = br.readLine();
        if (a != null) {
          boolean notAllowed = a.contains(".png") || a.contains(".jpg") || (a.contains(".gif")) || a.contains("404");
          if (a.length() > 20 && !notAllowed) {

            st = new StringTokenizer(a, "[ \"");
            if (st.hasMoreTokens()) {
              s1 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              st.nextToken();
            }
            if (st.hasMoreTokens()) {
              st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s2 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s3 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s4 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s5 = st.nextToken();
            }

            if (st.hasMoreTokens()) {
              s6 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s7 = st.nextToken();
            }
            if (st.hasMoreTokens()) {
              s8 = st.nextToken();
            }
            String[] s = new String[7];
            s[0] = String.valueOf(i);
            s[1] = s1;
            s[2] = s2;
            s[3] = s4;
            s[4] = s5;
            s[5] = s7;
            s[6] = s8;
            lis.add(s);

          }

          i++;
        }

      } while (a != null);

    } catch (IOException ex) {
      System.out.println("cetakIsiFile " + ex.getMessage());
    }
    return lis;

  }

  public ArrayList bacaDataBase(String kolom, String value) throws SQLException {

    ArrayList<String[]> lis = new ArrayList<String[]>();

    String sql = "";
    if (kolom.equals("semua")) {
      sql = "select * from logid ";
    } else if (kolom.equals("tanggal")) {
      sql = "select * from logid where waktu LIKE '" + value + "%'";
    } else if (kolom.equals("GET")) {
      sql = "select * from logid where tipe_aksi='" + kolom + "'";
    } else if (kolom.equals("POST")) {
      sql = "select * from logid where tipe_aksi='" + kolom + "'";
    } else {
      sql = "select * from logid where " + kolom + "='" + value + "'";
    }

    Statement st = konek.createStatement();
    ResultSet rs = st.executeQuery(sql);
    while (rs.next()) {
      String[] data = new String[7];
      data[0] = String.valueOf(rs.getInt(1));
      data[1] = String.valueOf(rs.getString(2));
      data[2] = String.valueOf(rs.getString(3));
      data[3] = String.valueOf(rs.getString(4));
      data[4] = String.valueOf(rs.getString(5));
      data[5] = String.valueOf(rs.getString(6));
      data[6] = String.valueOf(rs.getString(7));
      lis.add(data);
    }

    return lis;
  }

  public static void main(String[] args) {
    Tampil t = new Tampil();
    t.setVisible(true);
  }
}

hehe selamat menikmati kode buatan saya haha… tidak terlalu sulit sebenarnya, mungkin saya saja yang kurang pinter nulisnya kalo terlihat membingungkan hehe. jika anda bingung silahkan tanyakan, nanti akan saya jawab sebisa saya hehe.. untuk pembuatan tampilan / GUI nya akan kita bahas pada pertemuan berikutnya hehe mohon maaf karena saya sudah ngantuk.. maaf jika ada kesalahan mohon kesediaan anda untuk memberitahu insyaAllah saya betulkan. jika anda ingin mempelajari materi lainnya silahkan menuju daftar materi
πŸ™‚πŸ˜€

Daftar Materi Java

silahkan ditanggapi :)

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s