Skip to content

Commit

Permalink
Code refactored for line chart
Browse files Browse the repository at this point in the history
  • Loading branch information
jittakal authored and rchokkam committed Jan 16, 2012
1 parent 4e43626 commit 4d69a23
Show file tree
Hide file tree
Showing 6 changed files with 150 additions and 459 deletions.
26 changes: 14 additions & 12 deletions src/log2json/historic.clj
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -43,18 +43,19 @@
(defn process-access-file (defn process-access-file
"For each folder" "For each folder"
[a-map ^File access-file] [a-map ^File access-file]
(println access-file) (with-open [fr (FileReader. access-file)
(loop [rmap a-map br (BufferedReader. fr)]
lines (line-seq (BufferedReader. (FileReader. access-file)))] (loop [rmap a-map
(if (empty? lines) lines (line-seq (BufferedReader. (FileReader. access-file)))]
rmap (if (empty? lines)
(if (skip-line? (first lines)) rmap
(recur rmap (rest lines)) (if (skip-line? (first lines))
(let [line-vec (parse-log-line (first lines)) (recur rmap (rest lines))
tcount (get-in rmap line-vec) (let [line-vec (parse-log-line (first lines))
acount (if (nil? tcount) 0 tcount)] tcount (get-in rmap line-vec)
(recur (assoc-in rmap line-vec (inc acount)) acount (if (nil? tcount) 0 tcount)]
(rest lines))))))) (recur (assoc-in rmap line-vec (inc acount))
(rest lines))))))))


(defn get-count-data (defn get-count-data
"Returns vector" "Returns vector"
Expand All @@ -64,6 +65,7 @@
(replace {nil 0} rvec) (replace {nil 0} rvec)
(recur (conj rvec (get m-map (first str-dates))) (recur (conj rvec (get m-map (first str-dates)))
(rest str-dates))))) (rest str-dates)))))

(defn trim-year (defn trim-year
"Remove the years" "Remove the years"
[dvec] [dvec]
Expand Down
120 changes: 120 additions & 0 deletions src/log2json/line.clj
Original file line number Original file line Diff line number Diff line change
@@ -0,0 +1,120 @@
(ns ^{:author "Jitendra Takalkar jitendra.takalkar@gmail.com"
:doc "Access log to json converter"}
log2json.line
(:gen-class)
(:use [log2json.config])
(:use [log2json.common])
(:use [log2json.util])
(:use [clojure.data.json :only (json-str write-json read-json)])
(:import [java.io File FileFilter FileReader BufferedReader BufferedWriter FileWriter]))

(def hours (atom (sorted-set-by h-comparator)))

(defn get-hour
[^String date-str]
(let [datetoken (.split date-str ":")
hour (get datetoken 1)]
(swap! hours conj hour)
hour))

(defn parse-log-line
"Parse access log line"
[^String line]
(let [tokens (re-find re-expn line)
key2 (get-hour (get tokens 4))
status-code (get tokens 6)
module-name (get-module-name (get tokens 5))
key1 (str (.toLowerCase module-name) ":" status-code)]
[key1 key2]))

(defn process-access-file
"For each folder"
[a-map ^File access-file]
(with-open [fr (FileReader. access-file)
br (BufferedReader. fr)]
(loop [rmap a-map
lines (line-seq br)]
(if (empty? lines)
rmap
(if (skip-line? (first lines))
(recur rmap (rest lines))
(let [line-vec (parse-log-line (first lines))
tcount (get-in rmap line-vec)
acount (if (nil? tcount) 0 tcount)]
(recur (assoc-in rmap line-vec (inc acount))
(rest lines))))))))

(defn get-count-data
"Returns vector"
[m-map]
(loop [rvec [] str-hours @hours]
(if (empty? str-hours)
(replace {nil 0} rvec)
(recur (conj rvec (get m-map (first str-hours)))
(rest str-hours)))))

(defn get-module-success-data
"Return the JSON"
[^String module-name d-map]
(loop [r-vec [] s-codes success-status-codes]
(if (empty? s-codes)
(merge json-map
{:title {:text (.toUpperCase module-name)
:style {:color "#ffffff"
:fontWeight "bold"
:fontSize "27px"}}
:subtitle {:text (str "KASIA2-SUCCESS")
:style {:color "#ffffff"
:fontSize "15px"}}
:xAxis {:categories (vec @hours)
:labels {:rotation 90
:step 2}}
:series r-vec})
(recur (conj r-vec {:name (first s-codes)
:data (get-count-data (get d-map (str module-name ":" (first s-codes))))})
(rest s-codes)))))

(defn get-module-error-data
"Return the JSON"
[^String module-name d-map]
(loop [r-vec [] s-codes error-status-codes]
(if (empty? s-codes)
(merge json-map
{:title {:text (.toUpperCase module-name)
:style {:color "#ffffff"
:fontWeight "bold"
:fontSize "27px"}}
:subtitle {:text (str "KASIA2-ERROR")
:style {:color "#ffffff"
:fontSize "15px"}}
:xAxis {:categories (vec @hours)
:labels {:rotation 90
:step 2}}
:series r-vec})
(recur (conj r-vec {:name (first s-codes)
:data (get-count-data (get d-map (str module-name ":" (first s-codes))))})
(rest s-codes)))))

(defn for-each-module
"Process"
[^String base-path d-map]
(loop [modules k2-modules]
(if (empty? modules)
"Done"
(recur (do (write-to-file (str base-path "/" (first modules) "_" "access_line_log.json")
(json-str (get-module-success-data (first modules) d-map)))
(write-to-file (str base-path "/" (first modules) "_" "access_line_e_log.json")
(json-str (get-module-error-data (first modules) d-map)))
(rest modules))))))

(defn -main
"Main function"
[^String base-path & file-names]
(loop [a-map {} files file-names]
(if (empty? files)
(for-each-module base-path a-map)
(recur (process-access-file
a-map
(File. (str base-path (first files))))
(rest files)))))

222 changes: 0 additions & 222 deletions src/log2json/linee.clj

This file was deleted.

Loading

0 comments on commit 4d69a23

Please sign in to comment.