1
1
import project.Any.Any
2
2
import project.Data.Text.Text
3
+ import project.Data.Vector.Vector
3
4
import project.Data.Numbers.Integer
4
5
import project.Meta
5
6
import project.Nothing.Nothing
@@ -14,12 +15,7 @@ Any.log_message : Text -> Log_Level -> Any
14
15
Any.log_message self ~message:Text level:Log_Level=Log_Level.Info =
15
16
type_name = self.to Meta.Type . qualified_name
16
17
logger = LoggerFactory.getLogger type_name
17
- case level of
18
- Log_Level.Finest -> logger.trace message
19
- Log_Level.Fine -> logger.debug message
20
- Log_Level.Info -> logger.info message
21
- Log_Level.Warning -> logger.warn message
22
- Log_Level.Severe -> logger.error message
18
+ log_impl logger message level []
23
19
self
24
20
25
21
## Infrastructure for reporting logs and progress of computations.
@@ -33,7 +29,7 @@ Any.log_message self ~message:Text level:Log_Level=Log_Level.Info =
33
29
together and will report it as a whole to a
34
30
[progress displaying facility](https://github.com/enso-org/enso/pull/12126).
35
31
type Progress
36
- private Running label:Text max:Integer
32
+ private Running label:Text max:Integer logger
37
33
38
34
## Performs provided `action` while reporting its progress.
39
35
@@ -49,8 +45,9 @@ type Progress
49
45
- action: function performing the computation while reporting its `Progress`
50
46
51
47
run label:Text up_to:Integer action:(Progress->Any) -> Any =
52
- progress = Progress.Running label (up_to.max 1)
53
- progress.log_message progress.label+"@"+up_to.to_text Log_Level.Finest # TBD
48
+ logger = LoggerFactory.getLogger (Progress.to Meta.Type . qualified_name)
49
+ progress = Progress.Running label (up_to.max 1) logger
50
+ log_impl logger "INIT {}:{}@{}" Log_Level.Finest [progress, progress.label, progress.max]
54
51
res = action progress
55
52
progress.advance up_to
56
53
res
@@ -68,7 +65,7 @@ type Progress
68
65
69
66
advance self amount:Integer=1 -> Progress =
70
67
add = if amount>=0 then amount else 0
71
- self.log_message self.label+"+"+add.to_text Log_Level.Finest # TBD
68
+ log_impl self.logger "ADVANCE {}+{}" Log_Level.Finest [self, add]
72
69
self
73
70
74
71
## Provides additional human readable detail of the status of the computation.
@@ -80,9 +77,12 @@ type Progress
80
77
The self value.
81
78
82
79
log self detail:Text -> Progress =
83
- self.log_message self.label+":"+detail Log_Level.Finest #TBD
80
+ log_impl self.logger "LOG {}:{}" Log_Level.Finest [self, detail]
84
81
self
85
82
83
+ ## Simple name of the progress
84
+ to_text self = "Progress"
85
+
86
86
## PRIVATE
87
87
type Log_Level
88
88
## Finest (Trace) level log message.
@@ -99,3 +99,17 @@ type Log_Level
99
99
100
100
## Severe level log message.
101
101
Severe
102
+
103
+ private log_impl logger ~message:Text level:Log_Level args:Vector =
104
+ builder = case level of
105
+ Log_Level.Finest -> logger.atTrace
106
+ Log_Level.Fine -> logger.atDebug
107
+ Log_Level.Info -> logger.atInfo
108
+ Log_Level.Warning -> logger.atWarn
109
+ Log_Level.Severe -> logger.atError
110
+
111
+ builder.setMessage message
112
+ args.each a->
113
+ builder.addArgument a
114
+
115
+ builder.log
0 commit comments