본문 바로가기
Study/Flutter

[Flutter] 로그 도우미 logger 사용법

개발에 있어서 로그의 중요성은 강조하지 않을수 없습니다. 

로그가 없는 개발은 유지보수와 협업에 큰 장애를 줄 수 있습니다.

 

작고 사용하기 쉽고 아름다운 로그를 인쇄하는 확장 가능한 로거가 있습니다. 

Android용 로거에서 영감을 받아 만들어진 Flutter 로거를 소개합니다.

 

https://pub.dev/packages/logger

 

logger | Dart Package

Small, easy to use and extensible logger which prints beautiful logs.

pub.dev

 

예시 코드

import 'package:logger/logger.dart';

var logger = Logger(
  printer: PrettyPrinter(),
);

var loggerNoStack = Logger(
  printer: PrettyPrinter(methodCount: 0),
);

void main() {
  print(
      'Run with either `dart example/main.dart` or `dart --enable-asserts example/main.dart`.');
  demo();
}

void demo() {
  logger.d('Log message with 2 methods');

  loggerNoStack.i('Info message');

  loggerNoStack.w('Just a warning!');

  logger.e('Error! Something bad happened', 'Test Error');

  loggerNoStack.v({'key': 5, 'value': 'something'});

  Logger(printer: SimplePrinter(colors: true)).v('boom');
}

출력 결과

 

 

사용법 

var logger = Logger();

logger.d("Logger is working!");

위와 같이 main화면에서 선언해주면,

하위 모든화면에서 바로 객체를 공유하며 사용이 가능합니다.

// methodCount를 설정하여 더 많은 method stack을 출력할수 있습니다. 
var logger_3Stack = Logger(printer: PrettyPrinter(methodCount: 3),);

logger_3Stack.i('Info message');

logger_3Stack.w('Just a warning!');

위와같이 method 옵션으로 값을 주어 로그의 위치 stack을 간결하게 만들거나

추적하기 용이하게 만들수도 있습니다. 

 

그외에 더 다양한 옵션들을 설정할수 있습니다.

var logger = Logger(
  printer: PrettyPrinter(
    methodCount: 2, // number of method calls to be displayed
    errorMethodCount: 8, // number of method calls if stacktrace is provided
    lineLength: 120, // width of the output
    colors: true, // Colorful log messages
    printEmojis: true, // Print an emoji for each log message
    printTime: false // Should each log print contain a timestamp
  ),
);

 

 

로그 종류

로거는 v ,d , i , w, e, wtf (?)

총 6개 로그종류를 만들어두었네요. 

logger.v("Verbose log");

logger.d("Debug log");

logger.i("Info log");

logger.w("Warning log");

logger.e("Error log");

logger.wtf("What a terrible failure log");

저같은 경우 전부 구분해서 사용하진 않고,

Error와 Debug를 많이 사용할것 같네요

 

특정 로그만 출력하기

Logger.level = Level.warning;

logger.w로 작성된 로그만 출력됩니다.