-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathlog.go
82 lines (70 loc) · 2.54 KB
/
log.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
/*
* g2z - Zabbix module adapter for Go
* Copyright (C) 2015 - Ryan Armstrong <[email protected]>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package g2z
/*
#include <stdlib.h>
#include "log.h"
// ignore missing symbol if not loaded via Zabbix
#pragma weak __zbx_zabbix_log
// non-variadic wrapper for C.zabbix_log
static void g2z_log(int level, const char *format)
{
void (*fptr)(int, const char*, ...);
// check if zabbix_log() is resolvable
if ((fptr = zabbix_log) != 0)
(*fptr)(level, format);
}
*/
import "C"
import (
"fmt"
"unsafe"
)
// logf formats according to a format specifier and writes to the Zabbix log file.
func logf(level int, format string, a ...interface{}) {
// TODO: Add runtime check for configured log level
str := C.CString(fmt.Sprintf(format, a...))
C.g2z_log(C.int(level), str)
C.free(unsafe.Pointer(str))
}
// LogCriticalf formats according to a format specifier and writes to the Zabbix log file with a
// critical message.
func LogCriticalf(format string, a ...interface{}) {
logf(C.LOG_LEVEL_CRIT, format, a...)
}
// LogErrorf formats according to a format specifier and writes to the Zabbix log file with an
// error message.
func LogErrorf(format string, a ...interface{}) {
logf(C.LOG_LEVEL_ERR, format, a...)
}
// LogWarningf formats according to a format specifier and writes to the Zabbix log file with a
// warning message.
func LogWarningf(format string, a ...interface{}) {
logf(C.LOG_LEVEL_WARNING, format, a...)
}
// LogDebugf formats according to a format specifier and writes to the Zabbix log file with a
// debug message.
func LogDebugf(format string, a ...interface{}) {
logf(C.LOG_LEVEL_DEBUG, format, a...)
}
// LogInfof formats according to a format specifier and writes to the Zabbix log file with an
// informational message.
func LogInfof(format string, a ...interface{}) {
logf(C.LOG_LEVEL_INFORMATION, format, a...)
}