logger_result 0.0.2 copy "logger_result: ^0.0.2" to clipboard
logger_result: ^0.0.2 copied to clipboard

logger_result is result and logger library for dart.

example/main.dart

import 'package:logger_result/logger_result.dart';

void main() {

    final Type? classLocation = null;
    const functionLocation = 'main';
    Map<String, dynamic> monitor = {};
    Map<String, dynamic> debug = {};
    List<Log> histories = [];

    final example = Example();

    final function1Result = example.function1(1);
    histories.add(function1Result);

    final function2Result = example.function2('a');
    histories.add(function2Result);

    final function3Result = example.function3('b');
    histories.add(function3Result);

    final function4Result = example.function4(1);
    histories.add(function4Result);

    final result = Safety(Complete(), classLocation, functionLocation, monitor, debug, histories);

    final formatterA = Formatter.loggerResultDefault(result);
    print('--- デフォルトの整形形式 ---');
    print(formatterA.baseToYamlString());

    final formatterB = Formatter.toYamlString(result.toJson());
    print('--- 整形無しで yaml で表示 ---');
    print(formatterB);
    
    final formatterC = Formatter.toJsonString(result.toJson());
    print('--- 整形無しで json で表示 ---');
    print(formatterC);

}

class Example
{


    Result<int, Exception> function0(int number) {

        final classLocation = runtimeType;
        const functionLocation = 'function0';
        Map<String, dynamic> monitor = {};
        Map<String, dynamic> debug = {};
        List<Log> histories = [];

        // Error を throw したいときは Panic に wrap して throw する.
        if (number == 99.99) throw Panic(Error(), classLocation, functionLocation, monitor, debug, histories);

        if (number == 0) return Failure(Exception(), classLocation, functionLocation, monitor, debug, histories);

        return Success(number, classLocation, functionLocation, monitor, debug, histories);         

    }

    // Complete は void の代わりに利用する.
    // 何か任意のメッセージを log に残したい場合 loggerResultMessage に List<String> 型で 値を代入する.
    Result<int, Exception> function1(int number) {

        final classLocation = runtimeType;
        const functionLocation = 'function1';
        Map<String, dynamic> monitor = {};
        Map<String, dynamic> debug = {};
        List<Log> histories = [];

        final function0Result = function0(number);
        histories.add(function0Result);

        // 下記の code の syntax sugar.
        // switch (function0Result) {
        //      case Success(asValue: final value):
        //          return Success(value, classLocation, functionLocation, monitor, debug, histories);
        //      case Failure(asError: final error):
        //          return Failure(error, classLocation, functionLocation, monitor, debug, histories);
        // }
        return Result.fromResult(function0Result, classLocation, functionLocation, monitor, debug, histories);

    }

    Result<String, Exception> function2(String string) {

        final classLocation = runtimeType;
        const functionLocation = 'function2';
        Map<String, dynamic> monitor = {};
        Map<String, dynamic> debug = {};
        List<Log> histories = [];

        // monitor に追加された値は、debug 実行時、本番実行時ともに、log として記録される.
        monitor.addAll({
            'input_value': string,
        });

        // debug に追加された値は debug 実行時のみ、 log として記録される.
        debug.addAll({
            'input_value': string,
        });

        if (string.isEmpty) return Failure(Exception(), classLocation, functionLocation, monitor, debug, histories);

        return Success(string, classLocation, functionLocation, monitor, debug, histories);         

    }

    // Safety は Exception が発生しない場合に利用する.
    Safety<String> function3(String string) {

        final classLocation = runtimeType;
        const functionLocation = 'function3';
        Map<String, dynamic> monitor = {};
        Map<String, dynamic> debug = {};
        List<Log> histories = [];

        return Safety(string, classLocation, functionLocation, monitor, debug, histories);         

    }

    Result<int, Exception> function4(int number) {

        final classLocation = runtimeType;
        const functionLocation = 'function4';
        Map<String, dynamic> monitor = {};
        Map<String, dynamic> debug = {};
        List<Log> histories = [];

        final function0Result = function0(number);
        histories.add(function0Result);

        // これ以降 function4Result は Success 型として解釈される.
        if (function0Result is! Success<int, Exception>) return Failure(function0Result.asError!, classLocation, functionLocation, monitor, debug, histories);

        return Success(function0Result.wrapped, classLocation, functionLocation, monitor, debug, histories);

    }

}
0
likes
130
points
35
downloads

Publisher

verified publisherbpriver.com

Weekly Downloads

logger_result is result and logger library for dart.

Repository (GitLab)

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

bpriver_design_pattern, yaml_writer

More

Packages that depend on logger_result