logger icon indicating copy to clipboard operation
logger copied to clipboard

Fileoutput/Multioutput is not writing the logs to file

Open pushpacbasappa opened this issue 1 year ago • 0 comments
trafficstars

Hi I am using MultiOutput to Log to multioutput location. Below is my code to Create logger

List<LogOutput> delegateList = List.empty(growable: true);
 for (var element in logUploadMechanism) {
   delegateList.add(getloggerDelegates(element));
 }
 MultiOutput output = MultiOutput(delegateList);
 logger = Logger(
     printer: LoggerMessager(), output:output);

LogOutput getloggerDelegates(delegateName) {
  switch (delegateName.toLowerCase()) {
    case CONSTANT_STRING_CONSOLE:
      return ConsoleLoggerDelegate();
    case CONSTANT_STRING_FILE:
      return FileLoggerDelegate(file: File("logs.txt"));
    case CONSTANT_STRING_AWS_FIREHOSE:
      return AWSFirehoseLoggerDelegate();
    default:
      return ConsoleLoggerDelegate();
  }
}

created the custom output class for each output method. Here is my fileOutput class

class FileLoggerDelegate extends LogOutput {
  @override
  void output(OutputEvent event) {
    print("FileLoggerDelegate");
    var filePath = 'logs.txt';
    var file = File(filePath).openWrite(mode: FileMode.append);
    for (var line in event.lines) {
      file.writeln(line);
    }
    file.close();
  }
}

File is not creating and also logging is not happening. I have no clue what is going wrong. Suggestion would be helpful.

pushpacbasappa avatar May 08 '24 07:05 pushpacbasappa