service.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package text
  2. import (
  3. "fmt"
  4. "io"
  5. )
  6. const (
  7. arrow = "==>"
  8. smallArrow = " ->"
  9. opSymbol = "::"
  10. )
  11. type Logger struct {
  12. name string
  13. Debug bool
  14. stdout io.Writer
  15. stderr io.Writer
  16. r io.Reader
  17. }
  18. func NewLogger(stdout, stderr io.Writer, r io.Reader, debug bool, name string) *Logger {
  19. return &Logger{
  20. Debug: debug,
  21. name: name,
  22. r: r,
  23. stderr: stderr,
  24. stdout: stdout,
  25. }
  26. }
  27. func (l *Logger) Child(name string) *Logger {
  28. return NewLogger(l.stdout, l.stderr, l.r, l.Debug, name)
  29. }
  30. func (l *Logger) Debugln(a ...any) {
  31. if !l.Debug {
  32. return
  33. }
  34. l.Println(append([]interface{}{
  35. Bold(yellow(fmt.Sprintf("[DEBUG:%s]", l.name))),
  36. }, a...)...)
  37. }
  38. func (l *Logger) OperationInfoln(a ...any) {
  39. l.Println(l.SprintOperationInfo(a...))
  40. }
  41. func (l *Logger) OperationInfo(a ...any) {
  42. l.Print(l.SprintOperationInfo(a...))
  43. }
  44. func (l *Logger) SprintOperationInfo(a ...any) string {
  45. return fmt.Sprint(append([]interface{}{Bold(Cyan(opSymbol + " ")), boldCode}, a...)...) + ResetCode
  46. }
  47. func (l *Logger) Info(a ...any) {
  48. l.Print(append([]interface{}{Bold(Green(arrow + " "))}, a...)...)
  49. }
  50. func (l *Logger) Infoln(a ...any) {
  51. l.Println(append([]interface{}{Bold(Green(arrow))}, a...)...)
  52. }
  53. func (l *Logger) Warn(a ...any) {
  54. l.Print(l.SprintWarn(a...))
  55. }
  56. func (l *Logger) Warnln(a ...any) {
  57. l.Println(l.SprintWarn(a...))
  58. }
  59. func (l *Logger) SprintWarn(a ...any) string {
  60. return fmt.Sprint(append([]interface{}{Bold(yellow(smallArrow + " "))}, a...)...)
  61. }
  62. func (l *Logger) Error(a ...any) {
  63. fmt.Fprint(l.stderr, l.SprintError(a...))
  64. }
  65. func (l *Logger) Errorln(a ...any) {
  66. fmt.Fprintln(l.stderr, l.SprintError(a...))
  67. }
  68. func (l *Logger) SprintError(a ...any) string {
  69. return fmt.Sprint(append([]interface{}{Bold(Red(smallArrow + " "))}, a...)...)
  70. }
  71. func (l *Logger) Printf(format string, a ...any) {
  72. fmt.Fprintf(l.stdout, format, a...)
  73. }
  74. func (l *Logger) Println(a ...any) {
  75. fmt.Fprintln(l.stdout, a...)
  76. }
  77. func (l *Logger) Print(a ...any) {
  78. fmt.Fprint(l.stdout, a...)
  79. }