| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | 
							- // Copyright 2014 The Gogs Authors. All rights reserved.
 
- // Use of this source code is governed by a MIT-style
 
- // license that can be found in the LICENSE file.
 
- package log
 
- import (
 
- 	"encoding/json"
 
- 	"github.com/go-xorm/xorm"
 
- )
 
- type Log struct {
 
- 	Id    int64
 
- 	Level int
 
- 	Msg   string `xorm:"TEXT"`
 
- }
 
- // DatabaseWriter implements LoggerInterface and is used to log into database.
 
- type DatabaseWriter struct {
 
- 	Driver string `json:"driver"`
 
- 	Conn   string `json:"conn"`
 
- 	Level  int    `json:"level"`
 
- 	x      *xorm.Engine
 
- }
 
- func NewDatabase() LoggerInterface {
 
- 	return &DatabaseWriter{Level: TRACE}
 
- }
 
- // init database writer with json config.
 
- // config like:
 
- //	{
 
- //		"driver": "mysql"
 
- //		"conn":"root:root@tcp(127.0.0.1:3306)/gogs?charset=utf8",
 
- //		"level": 0
 
- //	}
 
- // connection string is based on xorm.
 
- func (d *DatabaseWriter) Init(jsonconfig string) (err error) {
 
- 	if err = json.Unmarshal([]byte(jsonconfig), d); err != nil {
 
- 		return err
 
- 	}
 
- 	d.x, err = xorm.NewEngine(d.Driver, d.Conn)
 
- 	if err != nil {
 
- 		return err
 
- 	}
 
- 	return d.x.Sync(new(Log))
 
- }
 
- // write message in database writer.
 
- func (d *DatabaseWriter) WriteMsg(msg string, skip, level int) error {
 
- 	if level < d.Level {
 
- 		return nil
 
- 	}
 
- 	_, err := d.x.Insert(&Log{Level: level, Msg: msg})
 
- 	return err
 
- }
 
- func (_ *DatabaseWriter) Flush() {
 
- }
 
- func (_ *DatabaseWriter) Destroy() {
 
- }
 
- func init() {
 
- 	Register("database", NewDatabase)
 
- }
 
 
  |