/
test30.go
196 lines (182 loc) · 4.7 KB
/
test30.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
package main
import (
"fmt"
"log"
"os"
"os/exec"
"path"
"path/filepath"
"strings"
"time"
)
const (
LOGDIR = "logs"
LOGFILE = "oradev.log"
)
//别人的代码,不用理会这个文件,也不要执行
type LogStruct struct {
LogDirFilePath string
file *os.File
}
type LogInterface interface {
InitLog() error
CloseLog()
Write()
}
//初始化日志系统接口
func (l *LogStruct) InitLog() error {
fmt.Printf("Start adlog system initialization...\n\n")
// 检查日志文件是否存在,
res, err := FileCreate(LOGDIR, LOGFILE)
if err != nil {
return err
}
if res != nil {
l.LogDirFilePath = *res
logFile, err := os.OpenFile(l.LogDirFilePath, os.O_WRONLY|os.O_APPEND, os.ModePerm)
if err != nil {
return fmt.Errorf("Log system initialization failed: %s\n", err)
}
l.file = logFile
fmt.Printf("Log system initialization complete.\n\n")
}
return nil
}
func (l *LogStruct) Write(tp string, info interface{}) {
fmt.Println("lfile: ", l.file)
fmt.Println("path: ", l.LogDirFilePath)
adlog := log.New(l.file, "", log.Ldate|log.Ltime)
if tp == "INFO: " {
adlog.Println(tp, info)
}
if tp == "WARNING: " {
adlog.Println(tp, info)
}
if tp == "ERROR: " {
adlog.Println(tp, info)
}
if tp == "FATAL: " {
adlog.Println(tp, info)
os.Exit(1)
}
}
func INFO(info interface{}) error {
l := &LogStruct{}
l.Write("INFO: ", info)
return fmt.Errorf("++++++++++++++++++++++++++++++++++++++++++++++++++")
}
func WARNING(info interface{}) {
l := LogStruct{}
l.Write("WARNING: ", info)
}
func ERROR(info interface{}) {
l := LogStruct{}
l.Write("ERROR: ", info)
}
func FATAL(info interface{}) {
l := LogStruct{}
l.Write("FATAL: ", info)
}
//关闭日志文件
func (l *LogStruct) CloseLog() {
if l.file != nil {
l.file.Close()
} else {
fmt.Println("close log: ", l.file)
}
}
//关闭日志文件
func CLog() {
l := LogStruct{}
l.CloseLog()
}
// directory and file create
func FileCreate(dir string, filename string) (*string, error) {
var pfres string
//homedir := GetHomeDirectory()
homedir := `C:\Users\Administrator\Desktop\go_pro\src\io_pro\test`
if homedir != "" {
exist, err := PathExists(path.Join(homedir, dir))
if err != nil {
return nil, fmt.Errorf("Get directory property information occurred Error: %v\n", err)
}
if exist {
fmt.Printf("Check if directory exists - exists: %s\n\n", path.Join(homedir, dir))
} else {
fmt.Printf("Check if directory exists - Non-exists: %s\n", path.Join(homedir, dir))
// 创建文件夹
err := os.Mkdir(path.Join(homedir, dir), os.ModePerm)
if err != nil {
return nil, fmt.Errorf("directory created failed: %s\n\n", err)
} else {
fmt.Printf("directory created successfully: %s\n\n", path.Join(homedir, dir))
}
}
} else {
return nil, fmt.Errorf("Program home directory acquisition failed\n\n")
}
if filename != "" {
exist, err := PathExists(filepath.Join(path.Join(homedir, dir), filename))
if err != nil {
return nil, fmt.Errorf("Get file property information occurred Error: %v\n", err)
}
if exist {
fmt.Printf("Check if file exists - exists: %s\n", filepath.Join(path.Join(homedir, dir), filename))
pfres = filepath.Join(path.Join(homedir, dir), filename)
return &pfres, nil
} else {
fmt.Printf("Check if file exists - Non-exists: %s\n\n", filepath.Join(path.Join(homedir, dir), filename))
_, err := os.OpenFile(filepath.Join(path.Join(homedir, dir), filename), os.O_EXCL|os.O_CREATE, os.ModePerm)
if err != nil {
return nil, fmt.Errorf("file creation failed: %s\n\n", err)
} else {
fmt.Printf("file created successfully: %s\n\n", filepath.Join(path.Join(homedir, dir), filename))
pfres = filepath.Join(path.Join(homedir, dir), filename)
return &pfres, nil
}
}
} else {
return nil, fmt.Errorf("File name cannot be empty")
}
return nil, nil
}
//Get program home directory
func GetHomeDirectory() (homedir string) {
file, _ := exec.LookPath(os.Args[0])
ExecFilePath, _ := filepath.Abs(file)
execfileslice := strings.Split(ExecFilePath, "/")
HomeDirectory := execfileslice[:len(execfileslice)-2]
for _, v := range HomeDirectory {
if v != "" {
homedir += `/` + v
}
}
if homedir != "" {
fmt.Printf("Program home directory initialized successfully: %s\n", homedir)
return homedir
} else {
fmt.Printf("Program home directory initialized failed\n")
}
return ""
}
// 判断文件夹是否存在
func PathExists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
return false, err
}
func main8938373() {
l := LogStruct{}
err := (&l).InitLog()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
r := INFO(time.Now().Format("2006-01-02 15:04:05"))
fmt.Println("r:", r)
}