emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/logview 01aa1ad1a6 124/259: Added submode for Monolog, a


From: ELPA Syncer
Subject: [nongnu] elpa/logview 01aa1ad1a6 124/259: Added submode for Monolog, a PHP logging framework. Closes #35.
Date: Fri, 31 Jan 2025 07:02:03 -0500 (EST)

branch: elpa/logview
commit 01aa1ad1a64da8531dc3dd6d71c0b2632005dd2b
Author: Mace Ojala <maco@itu.dk>
Commit: Mace Ojala <maco@itu.dk>

    Added submode for Monolog, a PHP logging framework. Closes #35.
    
    Also prettifying test indents.
---
 README.md          |   2 +-
 logview.el         |   9 +-
 test/logview.el    | 331 +++++++++++++++++++++++++----------------------------
 test/monolog/1.log |  10 ++
 4 files changed, 173 insertions(+), 179 deletions(-)

diff --git a/README.md b/README.md
index 4ffd5c596c..a38276cd8e 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ command bindings lack modifiers.
 
 Out-of-the-box the mode should be able to parse standard SLF4J (Log4j,
 Logback) files as long as they use ISO 8601 timestamps, Apache error
-logs and certain UNIX files in `/var/log`.
+logs, PHP Monolog logs, and certain UNIX files in `/var/log`.
 
 
 ### Installation
diff --git a/logview.el b/logview.el
index 3cea28db10..8d1db117c3 100644
--- a/logview.el
+++ b/logview.el
@@ -73,8 +73,11 @@
                 (aliases . ("Log4j" "Log4j2" "Logback"))))
     ;; We misuse thread as a field for hostname.
     ("UNIX"  . ((format  . "TIMESTAMP THREAD NAME:")))
-    ("Apache Error Log" . ((format . "[TIMESTAMP] [NAME:LEVEL] [THREAD] 
MESSAGE")
-                           (levels . "RFC 5424 lowercase"))))
+    ("Apache Error Log"  . ((format . "[TIMESTAMP] [NAME:LEVEL] [THREAD] 
MESSAGE")
+                           (levels . "RFC 5424 lowercase")))
+    ("Monolog" . ((format  . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
+                  (levels  . "RFC 5424")
+                  (aliases . ("PHP" "PSR-3")))))
   "Alist of standard submodes.
 This value is used as the fallback for customizable
 `logview-additional-submodes'.")
@@ -118,7 +121,7 @@ This alist value is used as the fallback for customizable
                     ("ISO 8601 time only + millis"            "HH:mm:ss.SSS")
                     ("ISO 8601 time only + micros"            
"HH:mm:ss.SSSSSS")
                     ("ISO 8601 time only"                     "HH:mm:ss")
-                    ("asctime"                                "EEE MMM dd 
HH:mm:ss.SSSSSS yyyy")
+                    (nil                                      "EEE MMM dd 
HH:mm:ss.SSSSSS yyyy")
                     (nil                                      "MMM d HH:mm:ss")
                     (nil                                      "MMM d h:mm:ss 
a")
                     (nil                                      "h:mm:ss a")))
diff --git a/test/logview.el b/test/logview.el
index dcbed9e2f7..d5e4f16868 100644
--- a/test/logview.el
+++ b/test/logview.el
@@ -56,51 +56,51 @@
 
 (ert-deftest logview-test-log4j-standard-1 ()
   (logview--test-with-file "log4j/en-1.log" ()
-                           (should (equal logview--submode-name "SLF4J"))
-                           (logview--locate-current-entry entry start
-                             (should (and entry (equal start 1))))))
+    (should (equal logview--submode-name "SLF4J"))
+    (logview--locate-current-entry entry start
+      (should (and entry (equal start 1))))))
 
 (ert-deftest logview-test-log4j-national-timestamp-1 ()
   (logview--test-with-file "log4j/fr-1.log" ()
-                           (should (equal logview--submode-name "SLF4J"))))
+    (should (equal logview--submode-name "SLF4J"))))
 
 ;; Issue #2.
 (ert-deftest logview-test-log4j-parens-in-thread-name ()
   (logview--test-with-file "log4j/parens-in-thread-name.log" ()
-                           (should (equal logview--submode-name "SLF4J"))
-                           ;; Make sure that the second line is also 
recognized as an entry.
-                           ;; If it isn't, this will signal an error.
-                           (logview-next-entry)))
+    (should (equal logview--submode-name "SLF4J"))
+    ;; Make sure that the second line is also recognized as an entry.
+    ;; If it isn't, this will signal an error.
+    (logview-next-entry)))
 
 (ert-deftest logview-test-go-to-message-beginning-1 ()
   (logview--test-with-file "log4j/navigation-1.log" ()
-                           (should (equal logview--submode-name "SLF4J"))
-                           (forward-line 2)
-                           (logview-go-to-message-beginning)
-                           (should (looking-at "message 3$"))))
+    (should (equal logview--submode-name "SLF4J"))
+    (forward-line 2)
+    (logview-go-to-message-beginning)
+    (should (looking-at "message 3$"))))
 
 (ert-deftest logview-test-go-to-message-beginning-2 ()
   (logview--test-with-file "log4j/navigation-1.log" ()
-                           (should (equal logview--submode-name "SLF4J"))
-                           (transient-mark-mode 1)
-                           (forward-line 2)
-                           (logview-go-to-message-beginning t)
-                           (should (looking-at "message 3$"))
-                           (should (string= (buffer-substring-no-properties 
(region-beginning) (region-end)) "message 3"))
-                           (should (use-region-p))))
+    (should (equal logview--submode-name "SLF4J"))
+    (transient-mark-mode 1)
+    (forward-line 2)
+    (logview-go-to-message-beginning t)
+    (should (looking-at "message 3$"))
+    (should (string= (buffer-substring-no-properties (region-beginning) 
(region-end)) "message 3"))
+    (should (use-region-p))))
 
 (ert-deftest logview-test-unix-standard-1 ()
   (logview--test-with-file "unix/1.log" ()
-                           (should (equal logview--submode-name "UNIX"))
-                           (logview--locate-current-entry entry start
-                             (should (and entry (equal start 1))))))
+    (should (equal logview--submode-name "UNIX"))
+    (logview--locate-current-entry entry start
+      (should (and entry (equal start 1))))))
 
 (ert-deftest logview-test-custom-submode-1 ()
   (logview--test-with-file "custom/1.log" ((logview-additional-submodes
                                             '(("custom" (format . "TIMESTAMP 
LEVEL [NAME] ") (levels . "SLF4J")))))
-                           (should (equal logview--submode-name "custom"))
-                           (logview--locate-current-entry entry start
-                             (should (and entry (equal start 1))))))
+    (should (equal logview--submode-name "custom"))
+    (logview--locate-current-entry entry start
+      (should (and entry (equal start 1))))))
 
 ;; RFC 5424 levels.
 ;;
@@ -111,181 +111,162 @@
 ;;
 ;; TODO:  An epic case of DRY in these tests, maybe a function would be a good 
idea?
 (ert-deftest logview-test-rfc5424-level-0-emergency ()
-  (logview--test-with-file "levels/rfc-5424-levels.log"
-                           ((logview-additional-submodes
-                             '(("Monolog"
-                                (format . "[TIMESTAMP] NAME[THREAD].LEVEL: 
MESSAGE")
-                                (levels . "RFC 5424")))))
-                           (should (equal logview--submode-name "Monolog"))
-                           (should (equal (logview--locate-current-entry entry 
nil (logview--entry-level entry)) 0))
-                           (logview-go-to-message-beginning)
-                           (should (looking-at "Emergency message.$"))))
+  (logview--test-with-file "levels/rfc-5424-levels.log" ()
+    (should (equal logview--submode-name "Monolog"))
+    (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 0))
+    (logview-go-to-message-beginning)
+    (should (looking-at "Emergency message.$"))))
 
 (ert-deftest logview-test-rfc5424-level-1-alert ()
-  (logview--test-with-file
-   "levels/rfc-5424-levels.log"
-   ((logview-additional-submodes
-     '(("Monolog"
-        (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
-        (levels . "RFC 5424")))))
-   (should (equal logview--submode-name "Monolog"))
-   (logview-next-entry 1)
-   (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 1))
-   (logview-go-to-message-beginning)
-   (should (looking-at "Alert message.$"))))
+  (logview--test-with-file "levels/rfc-5424-levels.log" ()
+    (should (equal logview--submode-name "Monolog"))
+    (logview-next-entry 1)
+    (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 1))
+    (logview-go-to-message-beginning)
+    (should (looking-at "Alert message.$"))))
 
 (ert-deftest logview-test-rfc5424-level-2-critical ()
-  (logview--test-with-file
-   "levels/rfc-5424-levels.log"
-   ((logview-additional-submodes
-     '(("Monolog"
-        (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
-        (levels . "RFC 5424")))))
-   (should (equal logview--submode-name "Monolog"))
-   (logview-next-entry 2)
-   (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 2))
-   (logview-go-to-message-beginning)
-   (should (looking-at "Critical message.$"))))
+  (logview--test-with-file "levels/rfc-5424-levels.log" ()
+    (should (equal logview--submode-name "Monolog"))
+    (logview-next-entry 2)
+    (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 2))
+    (logview-go-to-message-beginning)
+    (should (looking-at "Critical message.$"))))
 
 (ert-deftest logview-test-rfc5424-level-3-error ()
-  (logview--test-with-file
-   "levels/rfc-5424-levels.log"
-   ((logview-additional-submodes
-     '(("Monolog"
-        (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
-        (levels . "RFC 5424")))))
-   (should (equal logview--submode-name "Monolog"))
-   (logview-next-entry 3)
-   (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 3))
-   (logview-go-to-message-beginning)
-   (should (looking-at "Error message.$"))))
+  (logview--test-with-file "levels/rfc-5424-levels.log" ()
+    (should (equal logview--submode-name "Monolog"))
+    (logview-next-entry 3)
+    (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 3))
+    (logview-go-to-message-beginning)
+    (should (looking-at "Error message.$"))))
 
 (ert-deftest logview-test-rfc5424-level-4-warning ()
-  (logview--test-with-file
-   "levels/rfc-5424-levels.log"
-   ((logview-additional-submodes
-     '(("Monolog"
-        (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
-        (levels . "RFC 5424")))))
-   (should (equal logview--submode-name "Monolog"))
-   (logview-next-entry 4)
-   (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 4))
-   (logview-go-to-message-beginning)
-   (should (looking-at "Warning message.$"))))
+  (logview--test-with-file "levels/rfc-5424-levels.log" ()
+    (should (equal logview--submode-name "Monolog"))
+    (logview-next-entry 4)
+    (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 4))
+    (logview-go-to-message-beginning)
+    (should (looking-at "Warning message.$"))))
 
 (ert-deftest logview-test-rfc5424-level-5-notice ()
-  (logview--test-with-file
-   "levels/rfc-5424-levels.log"
-   ((logview-additional-submodes
-     '(("Monolog"
-        (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
-        (levels . "RFC 5424")))))
-   (should (equal logview--submode-name "Monolog"))
-   (logview-next-entry 5)
-   (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 5))
-   (logview-go-to-message-beginning)
-   (should (looking-at "Notice message.$"))))
+  (logview--test-with-file "levels/rfc-5424-levels.log" ()
+    (should (equal logview--submode-name "Monolog"))
+    (logview-next-entry 5)
+    (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 5))
+    (logview-go-to-message-beginning)
+    (should (looking-at "Notice message.$"))))
 
 (ert-deftest logview-test-rfc5424-level-6-info ()
-  (logview--test-with-file
-   "levels/rfc-5424-levels.log"
-   ((logview-additional-submodes
-     '(("Monolog"
-        (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
-        (levels . "RFC 5424")))))
-   (should (equal logview--submode-name "Monolog"))
-   (logview-next-entry 6)
-   (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 6))
-   (logview-go-to-message-beginning)
-   (should (looking-at "Info message.$"))))
+  (logview--test-with-file "levels/rfc-5424-levels.log" ()
+    (should (equal logview--submode-name "Monolog"))
+    (logview-next-entry 6)
+    (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 6))
+    (logview-go-to-message-beginning)
+    (should (looking-at "Info message.$"))))
 
 (ert-deftest logview-test-rfc5424-level-7-debug ()
-  (logview--test-with-file
-   "levels/rfc-5424-levels.log"
-   ((logview-additional-submodes
-     '(("Monolog"
-        (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
-        (levels . "RFC 5424")))))
-   (should (equal logview--submode-name "Monolog"))
-   (logview-next-entry 7)
-   (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 7))
-   (logview-go-to-message-beginning)
-   (should (looking-at "Debug message.$"))))
+  (logview--test-with-file "levels/rfc-5424-levels.log" ()
+    (should (equal logview--submode-name "Monolog"))
+    (logview-next-entry 7)
+    (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 7))
+    (logview-go-to-message-beginning)
+    (should (looking-at "Debug message.$"))))
 
 (ert-deftest logview-test-rfc5424-level-undefined ()
-  (logview--test-with-file
-   "levels/rfc-5424-levels.log"
-   ((logview-additional-submodes
-     '(("Monolog"
-        (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
-        (levels . "RFC 5424")))))
-   (should (equal logview--submode-name "Monolog"))
-   ;; (logview-next-entry 8)
-   (forward-line 8)
-   (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 7))
-   (logview-go-to-message-beginning)
-   ;; (should (looking-at "No such level defined by RFC 5424.$"))))
-   (should (looking-at ""))))
+  (logview--test-with-file "levels/rfc-5424-levels.log" ()
+    (should (equal logview--submode-name "Monolog"))
+    ;; (logview-next-entry 8)
+    (forward-line 8)
+    (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 7))
+    (logview-go-to-message-beginning)
+    ;; (should (looking-at "No such level defined by RFC 5424.$"))))
+    (should (looking-at ""))))
 
 (ert-deftest logview-test-rfc5424-level-defined-level-after-an-undefined-one ()
-  (logview--test-with-file
-   "levels/rfc-5424-levels.log"
-   ((logview-additional-submodes
-     '(("Monolog"
-        (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
-        (levels . "RFC 5424")))))
-   (should (equal logview--submode-name "Monolog"))
-   (logview-next-entry 8)
-   (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 6))
-   (logview-go-to-message-beginning)
-   (should (looking-at "Info message after an invalid level.$"))))
+  (logview--test-with-file "levels/rfc-5424-levels.log" ()
+    (should (equal logview--submode-name "Monolog"))
+    (logview-next-entry 8)
+    (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 6))
+    (logview-go-to-message-beginning)
+    (should (looking-at "Info message after an invalid level.$"))))
 
 ;; Apache error log submode
 (ert-deftest logview-test-apache-submode-recognition ()
-  (logview--test-with-file
-   "apache/error.log" ()
-   (should (equal logview--submode-name "Apache Error Log"))))
+  (logview--test-with-file "apache/error.log" ()
+    (should (equal logview--submode-name "Apache Error Log"))))
 
 (ert-deftest logview-test-apache-submode-find-entries ()
-  (logview--test-with-file
-   "apache/error.log" ()
-   (logview--locate-current-entry entry start
-     (should (and entry (equal start 1))))))
+  (logview--test-with-file "apache/error.log" ()
+    (logview--locate-current-entry entry start
+      (should (and entry (equal start 1))))))
 
 (ert-deftest logview-test-apache-submode-match-a-message ()
-  (logview--test-with-file
-   "apache/error.log" ()
-   (logview--locate-current-entry entry start
-     (logview-go-to-message-beginning)
-     (should (looking-at "Emergency message.$")))))
+  (logview--test-with-file "apache/error.log" ()
+    (logview--locate-current-entry entry start
+      (logview-go-to-message-beginning)
+      (should (looking-at "Emergency message.$")))))
 
 (ert-deftest logview-test-apache-submode-match-a-message-after-undefined-lines 
()
-  (logview--test-with-file
-   "apache/error.log" ()
-   (logview--locate-current-entry entry start
-     (logview-next-entry 8)
-     (logview-go-to-message-beginning)
-     (should (looking-at "Info message after some undefined lines.")))))
-
-;;TODO: This, or something should test the eventual final levels
-;;LogView Mode works with. With that transition, maybe the RFC 5424
-;;and RFC 5424 lowercase level definitions could be merged.
+  (logview--test-with-file "apache/error.log" ()
+    (logview--locate-current-entry entry start
+      (logview-next-entry 8)
+      (logview-go-to-message-beginning)
+      (should (looking-at "Info message after some undefined lines.")))))
+
+;; TODO: This, or something should test the eventual final levels
+;; LogView Mode works with. With that transition, maybe the RFC 5424
+;; and RFC 5424 lowercase level definitions could be merged.
 (ert-deftest logview-test-apache-submode-match-all-levels ()
-  (logview--test-with-file
-   "apache/error.log" ()
-   (logview--locate-current-entry entry start
-     (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 0))
-     (logview-next-entry)
-     (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 1))
-     (logview-next-entry)
-     (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 2))
-     (logview-next-entry)
-     (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 3))
-     (logview-next-entry)
-     (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 4))
-     (logview-next-entry)
-     (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 5))
-     (logview-next-entry)
-     (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 6))
-     (logview-next-entry)
-     (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 7)))))
+  (logview--test-with-file "apache/error.log" ()
+    (logview--locate-current-entry entry start
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 0))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 1))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 2))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 3))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 4))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 5))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 6))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 7)))))
+
+;; Monolog submode
+(ert-deftest logview-test-monolog-submode-recognition ()
+  (logview--test-with-file "monolog/1.log" ()
+    (should (equal logview--submode-name "Monolog"))))
+
+(ert-deftest logview-test-monolog-submode-find-entries ()
+  (logview--test-with-file "monolog/1.log" ()
+    (logview--locate-current-entry entry start
+      (should (and entry (equal start 1))))))
+
+(ert-deftest logview-test-monolog-submode-match-a-message ()
+  (logview--test-with-file "monolog/1.log" ()
+    (logview--locate-current-entry entry start
+      (logview-go-to-message-beginning)
+      (should (looking-at "Emergency message.$")))))
+
+(ert-deftest logview-test-monolog-submode-match-all-levels ()
+  (logview--test-with-file "monolog/1.log" ()
+    (logview--locate-current-entry entry start
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 0))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 1))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 2))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 3))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 4))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 5))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 6))
+      (logview-next-entry)
+      (should (equal (logview--locate-current-entry entry nil 
(logview--entry-level entry)) 7)))))
diff --git a/test/monolog/1.log b/test/monolog/1.log
new file mode 100644
index 0000000000..10a7ae2e29
--- /dev/null
+++ b/test/monolog/1.log
@@ -0,0 +1,10 @@
+[2019-12-23 10:51:54] name[thread].EMERGENCY: Emergency message.
+[2019-12-23 10:51:55] name[thread].ALERT: Alert message.
+[2019-12-23 10:51:55] name[thread].CRITICAL: Critical message.
+[2019-12-23 10:51:56] name[thread].ERROR: Error message.
+[2019-12-23 10:51:56] name[thread].WARNING: Warning message.
+[2019-12-23 10:51:56] name[thread].NOTICE: Notice message.
+[2019-12-23 10:51:56] name[thread].INFO: Info message.
+[2019-12-23 10:51:56] name[thread].DEBUG: Debug message.
+[2019-12-23 10:51:56] name[thread].KITTENS: No such level defined by RFC 5424.
+[2019-12-23 10:51:56] name[thread].INFO: Info message after an invalid level.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]