service.go 1.9 KB

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