1// Copyright 2015 The Xorm Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// +build !windows,!nacl,!plan9
6
7package xorm
8
9import (
10	"fmt"
11	"log/syslog"
12
13	"xorm.io/core"
14)
15
16var _ core.ILogger = &SyslogLogger{}
17
18// SyslogLogger will be depricated
19type SyslogLogger struct {
20	w       *syslog.Writer
21	showSQL bool
22}
23
24// NewSyslogLogger implements core.ILogger
25func NewSyslogLogger(w *syslog.Writer) *SyslogLogger {
26	return &SyslogLogger{w: w}
27}
28
29// Debug log content as Debug
30func (s *SyslogLogger) Debug(v ...interface{}) {
31	s.w.Debug(fmt.Sprint(v...))
32}
33
34// Debugf log content as Debug and format
35func (s *SyslogLogger) Debugf(format string, v ...interface{}) {
36	s.w.Debug(fmt.Sprintf(format, v...))
37}
38
39// Error log content as Error
40func (s *SyslogLogger) Error(v ...interface{}) {
41	s.w.Err(fmt.Sprint(v...))
42}
43
44// Errorf log content as Errorf and format
45func (s *SyslogLogger) Errorf(format string, v ...interface{}) {
46	s.w.Err(fmt.Sprintf(format, v...))
47}
48
49// Info log content as Info
50func (s *SyslogLogger) Info(v ...interface{}) {
51	s.w.Info(fmt.Sprint(v...))
52}
53
54// Infof log content as Infof and format
55func (s *SyslogLogger) Infof(format string, v ...interface{}) {
56	s.w.Info(fmt.Sprintf(format, v...))
57}
58
59// Warn log content as Warn
60func (s *SyslogLogger) Warn(v ...interface{}) {
61	s.w.Warning(fmt.Sprint(v...))
62}
63
64// Warnf log content as Warnf and format
65func (s *SyslogLogger) Warnf(format string, v ...interface{}) {
66	s.w.Warning(fmt.Sprintf(format, v...))
67}
68
69// Level shows log level
70func (s *SyslogLogger) Level() core.LogLevel {
71	return core.LOG_UNKNOWN
72}
73
74// SetLevel always return error, as current log/syslog package doesn't allow to set priority level after syslog.Writer created
75func (s *SyslogLogger) SetLevel(l core.LogLevel) {}
76
77// ShowSQL set if logging SQL
78func (s *SyslogLogger) ShowSQL(show ...bool) {
79	if len(show) == 0 {
80		s.showSQL = true
81		return
82	}
83	s.showSQL = show[0]
84}
85
86// IsShowSQL if logging SQL
87func (s *SyslogLogger) IsShowSQL() bool {
88	return s.showSQL
89}
90