github.com/viant/toolbox@v0.34.5/file_logger_test.go (about) 1 package toolbox_test 2 3 import ( 4 "fmt" 5 "github.com/stretchr/testify/assert" 6 "github.com/viant/toolbox" 7 "io/ioutil" 8 "os" 9 "syscall" 10 "testing" 11 "time" 12 ) 13 14 15 func TestConfigLogger(t *testing.T) { 16 17 _, err := toolbox.NewFileLogger(toolbox.FileLoggerConfig{ 18 LogType: "test", 19 FileTemplate: "/tmp/test[yyyy].log", 20 QueueFlashCount: 5, 21 MaxQueueSize: 100, 22 FlushRequencyInMs: 250, 23 //MaxIddleTimeInSec: 2, 24 }) 25 assert.NotNil(t, err) 26 27 _, err = toolbox.NewFileLogger(toolbox.FileLoggerConfig{ 28 LogType: "test", 29 FileTemplate: "/tmp/test[yyyy].log", 30 QueueFlashCount: 5, 31 MaxQueueSize: 100, 32 //FlushRequencyInMs: 250, 33 MaxIddleTimeInSec: 2, 34 }) 35 assert.NotNil(t, err) 36 37 _, err = toolbox.NewFileLogger(toolbox.FileLoggerConfig{ 38 LogType: "test", 39 FileTemplate: "/tmp/test[yyyy].log", 40 QueueFlashCount: 5, 41 //MaxQueueSize :100, 42 FlushRequencyInMs: 250, 43 MaxIddleTimeInSec: 2, 44 }) 45 assert.NotNil(t, err) 46 47 _, err = toolbox.NewFileLogger(toolbox.FileLoggerConfig{ 48 LogType: "test", 49 FileTemplate: "/tmp/test[yyyy].log", 50 //QueueFlashCount :5, 51 MaxQueueSize: 100, 52 FlushRequencyInMs: 250, 53 MaxIddleTimeInSec: 2, 54 }) 55 assert.NotNil(t, err) 56 57 _, err = toolbox.NewFileLogger(toolbox.FileLoggerConfig{ 58 LogType: "test", 59 //FileTemplate :"/tmp/test[yyyy].log", 60 QueueFlashCount: 5, 61 MaxQueueSize: 100, 62 FlushRequencyInMs: 250, 63 MaxIddleTimeInSec: 2, 64 }) 65 assert.NotNil(t, err) 66 67 _, err = toolbox.NewFileLogger(toolbox.FileLoggerConfig{ 68 //LogType :"test", 69 FileTemplate: "/tmp/test[yyyy].log", 70 QueueFlashCount: 5, 71 MaxQueueSize: 100, 72 FlushRequencyInMs: 250, 73 MaxIddleTimeInSec: 2, 74 }) 75 assert.NotNil(t, err) 76 77 } 78 79 func TestLogger(t *testing.T) { 80 81 testFile := fmt.Sprintf("/tmp/test%v.log", time.Now().Year()) 82 toolbox.RemoveFileIfExist(testFile) 83 defer toolbox.RemoveFileIfExist(testFile) 84 85 logger, err := toolbox.NewFileLogger(toolbox.FileLoggerConfig{ 86 LogType: "test", 87 FileTemplate: "/tmp/test[yyyy].log", 88 QueueFlashCount: 4, 89 MaxQueueSize: 100, 90 FlushRequencyInMs: 600, 91 MaxIddleTimeInSec: 1, 92 }) 93 94 assert.Nil(t, err) 95 96 for i := 0; i < 6; i++ { 97 logger.Log(&toolbox.LogMessage{ 98 MessageType: "test", 99 Message: fmt.Sprintf("Abc%v", i), 100 }) 101 time.Sleep(10 * time.Millisecond) 102 } 103 104 time.Sleep(400 * time.Millisecond) 105 if file, err := os.Open(testFile); err == nil { 106 defer file.Close() 107 content, err := ioutil.ReadAll(file) 108 assert.Nil(t, err) 109 assert.Equal(t, "Abc0\nAbc1\nAbc2\nAbc3\nAbc4\n", string(content)) 110 } 111 112 time.Sleep(1 * time.Second) 113 114 if file, err := os.Open(testFile); err == nil { 115 defer file.Close() 116 content, err := ioutil.ReadAll(file) 117 assert.Nil(t, err) 118 assert.Equal(t, "Abc0\nAbc1\nAbc2\nAbc3\nAbc4\nAbc5\n", string(content)) 119 } 120 121 time.Sleep(1 * time.Second) 122 123 if file, err := os.Open(testFile); err == nil { 124 file.Close() 125 os.Remove(testFile) 126 } 127 128 logger.Notify(syscall.SIGKILL) 129 130 } 131 132 // 133 //func TestFileLogger_Notify(t *testing.T) { 134 // 135 // testFile := fmt.Sprintf("/tmp/test%v.log", time.Now().Year()) 136 // toolbox.RemoveFileIfExist(testFile) 137 // defer toolbox.RemoveFileIfExist(testFile) 138 // 139 // logger, err := toolbox.NewFileLogger(toolbox.FileLoggerConfig{ 140 // LogType: "test", 141 // FileTemplate: "/tmp/test[yyyy].log", 142 // QueueFlashCount: 40, 143 // MaxQueueSize: 100, 144 // FlushRequencyInMs: 1200000, 145 // MaxIddleTimeInSec: 20, 146 // }) 147 // 148 // assert.Nil(t, err) 149 // 150 // for i := 0; i < 6; i++ { 151 // logger.Log(&toolbox.LogMessage{ 152 // MessageType: "test", 153 // Message: fmt.Sprintf("Abc%v", i), 154 // }) 155 // } 156 // logger.Notify(syscall.SIGKILL) 157 // time.Sleep(100 * time.Millisecond) 158 // if file, err := os.Open(testFile); err == nil { 159 // defer file.Close() 160 // content, err := ioutil.ReadAll(file) 161 // assert.Nil(t, err) 162 // assert.Equal(t, "Abc0\nAbc1\nAbc2\nAbc3\nAbc4\nAbc5\n", string(content)) 163 // } 164 // assert.Nil(t, err) 165 //}