本站源代码
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

79 rindas
1.7KB

  1. // Copyright 2014 The Gogs Authors. All rights reserved.
  2. // Copyright 2019 The Gitea Authors. All rights reserved.
  3. // Use of this source code is governed by a MIT-style
  4. // license that can be found in the LICENSE file.
  5. package log
  6. import (
  7. "encoding/json"
  8. "io"
  9. "os"
  10. )
  11. // CanColorStdout reports if we can color the Stdout
  12. // Although we could do terminal sniffing and the like - in reality
  13. // most tools on *nix are happy to display ansi colors.
  14. // We will terminal sniff on Windows in console_windows.go
  15. var CanColorStdout = true
  16. // CanColorStderr reports if we can color the Stderr
  17. var CanColorStderr = true
  18. type nopWriteCloser struct {
  19. w io.WriteCloser
  20. }
  21. func (n *nopWriteCloser) Write(p []byte) (int, error) {
  22. return n.w.Write(p)
  23. }
  24. func (n *nopWriteCloser) Close() error {
  25. return nil
  26. }
  27. // ConsoleLogger implements LoggerProvider and writes messages to terminal.
  28. type ConsoleLogger struct {
  29. WriterLogger
  30. Stderr bool `json:"stderr"`
  31. }
  32. // NewConsoleLogger create ConsoleLogger returning as LoggerProvider.
  33. func NewConsoleLogger() LoggerProvider {
  34. log := &ConsoleLogger{}
  35. log.NewWriterLogger(&nopWriteCloser{
  36. w: os.Stdout,
  37. })
  38. return log
  39. }
  40. // Init inits connection writer with json config.
  41. // json config only need key "level".
  42. func (log *ConsoleLogger) Init(config string) error {
  43. err := json.Unmarshal([]byte(config), log)
  44. if err != nil {
  45. return err
  46. }
  47. if log.Stderr {
  48. log.NewWriterLogger(&nopWriteCloser{
  49. w: os.Stderr,
  50. })
  51. } else {
  52. log.NewWriterLogger(log.out)
  53. }
  54. return nil
  55. }
  56. // Flush when log should be flushed
  57. func (log *ConsoleLogger) Flush() {
  58. }
  59. // GetName returns the default name for this implementation
  60. func (log *ConsoleLogger) GetName() string {
  61. return "console"
  62. }
  63. func init() {
  64. Register("console", NewConsoleLogger)
  65. }
上海开阖软件有限公司 沪ICP备12045867号-1