Skip to content

Commit 20daa7b

Browse files
committed
Commit first version with possibility to do simple records
1 parent 0abd1d4 commit 20daa7b

11 files changed

+343
-0
lines changed

.project

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
'srcDirectory' : 'src'
3+
}

src/.properties

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
#format : #tonel
3+
}
+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
"
2+
I contains the implementation of a simple and tiny logger.
3+
4+
I can either log informations in the Trascript and/or in a file.
5+
"
6+
Class {
7+
#name : #ManifestTinyLogger,
8+
#superclass : #PackageManifest,
9+
#category : #'TinyLogger-Manifest'
10+
}
11+
12+
{ #category : #'code-critics' }
13+
ManifestTinyLogger class >> ruleRBCodeCruftLeftInMethodsRuleV1FalsePositive [
14+
^ #(#(#(#RGClassDefinition #(#TinyTranscriptLogger)) #'2018-11-25T02:59:41.364573+01:00') )
15+
]
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
Class {
2+
#name : #TinyAbstractLogger,
3+
#superclass : #Object,
4+
#category : #'TinyLogger-Core'
5+
}
6+
7+
{ #category : #testing }
8+
TinyAbstractLogger class >> isAbstract [
9+
^ self = TinyAbstractLogger
10+
]
11+
12+
{ #category : #logging }
13+
TinyAbstractLogger >> crRecord: aString [
14+
self subclassResponsibility
15+
]
16+
17+
{ #category : #logging }
18+
TinyAbstractLogger >> record: aString [
19+
self subclassResponsibility
20+
]
21+
22+
{ #category : #logging }
23+
TinyAbstractLogger >> recordCr: aString [
24+
self subclassResponsibility
25+
]
26+
27+
{ #category : #accessing }
28+
TinyAbstractLogger >> timestampFormatBlock [
29+
^ self subclassResponsibility
30+
]
+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
Class {
2+
#name : #TinyConcreteLogger,
3+
#superclass : #TinyAbstractLogger,
4+
#instVars : [
5+
'parentLogger'
6+
],
7+
#category : #'TinyLogger-Core'
8+
}
9+
10+
{ #category : #'instance creation' }
11+
TinyConcreteLogger class >> for: aTinyLogger [
12+
^ self new
13+
parentLogger: aTinyLogger;
14+
yourself
15+
]
16+
17+
{ #category : #testing }
18+
TinyConcreteLogger class >> isAbstract [
19+
^ self = TinyConcreteLogger
20+
]
21+
22+
{ #category : #accessing }
23+
TinyConcreteLogger >> depth [
24+
^ self parentLogger depth
25+
]
26+
27+
{ #category : #accessing }
28+
TinyConcreteLogger >> parentLogger [
29+
^ parentLogger
30+
]
31+
32+
{ #category : #accessing }
33+
TinyConcreteLogger >> parentLogger: aLogger [
34+
parentLogger := aLogger
35+
]
36+
37+
{ #category : #logging }
38+
TinyConcreteLogger >> record: aString on: aStream [
39+
self recordPreambleOn: aStream.
40+
aStream << aString
41+
]
42+
43+
{ #category : #accessing }
44+
TinyConcreteLogger >> recordPreambleOn: aStream [
45+
<compilerOptions: #(+ optionInlineTimesRepeat)>
46+
47+
self timestampFormatBlock value: aStream.
48+
aStream << ' : '.
49+
self depth timesRepeat: [ aStream tab ]
50+
]
51+
52+
{ #category : #accessing }
53+
TinyConcreteLogger >> timestampFormatBlock [
54+
^ self parentLogger timestampFormatBlock
55+
]
+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
Class {
2+
#name : #TinyFileLogger,
3+
#superclass : #TinyConcreteLogger,
4+
#instVars : [
5+
'fileName'
6+
],
7+
#category : #'TinyLogger-Core'
8+
}
9+
10+
{ #category : #accessing }
11+
TinyFileLogger >> fileName [
12+
^ fileName
13+
]
14+
15+
{ #category : #accessing }
16+
TinyFileLogger >> fileName: anObject [
17+
fileName := anObject
18+
]
19+
20+
{ #category : #accessing }
21+
TinyFileLogger >> fileStreamDo: aBlock [
22+
^ self fileName asFileReference
23+
ensureCreateFile;
24+
writeStreamDo: [ :s |
25+
s setToEnd.
26+
aBlock value: s ]
27+
]
28+
29+
{ #category : #accessing }
30+
TinyFileLogger >> parentLogger: aTinyLogger [
31+
super parentLogger: aTinyLogger.
32+
self fileName: aTinyLogger defaultFileName
33+
]
34+
35+
{ #category : #logging }
36+
TinyFileLogger >> record: aString [
37+
self fileStreamDo: [ :aStream | self record: aString on: aStream ]
38+
]

src/TinyLogger/TinyLogger.class.st

+168
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,168 @@
1+
Class {
2+
#name : #TinyLogger,
3+
#superclass : #TinyAbstractLogger,
4+
#instVars : [
5+
'timestampFormatBlock',
6+
'defaultFileName',
7+
'transcriptLogger',
8+
'depth',
9+
'stdOutLogger',
10+
'fileLogger'
11+
],
12+
#classVars : [
13+
'Default'
14+
],
15+
#category : #'TinyLogger-Core'
16+
}
17+
18+
{ #category : #accessing }
19+
TinyLogger class >> default [
20+
^ Default ifNil: [ Default := self new ]
21+
]
22+
23+
{ #category : #accessing }
24+
TinyLogger class >> default: anObject [
25+
Default := anObject
26+
]
27+
28+
{ #category : #initialization }
29+
TinyLogger class >> reset [
30+
^ self default: nil
31+
]
32+
33+
{ #category : #nesting }
34+
TinyLogger >> decreaseDepthLevel [
35+
self depth: self depth - 1
36+
]
37+
38+
{ #category : #accessing }
39+
TinyLogger >> defaultFileName [
40+
^ defaultFileName
41+
]
42+
43+
{ #category : #accessing }
44+
TinyLogger >> defaultFileName: anObject [
45+
defaultFileName := anObject
46+
]
47+
48+
{ #category : #accessing }
49+
TinyLogger >> defaultTimestampFormatBlock [
50+
^ [ :aStream |
51+
Date today printOn: aStream.
52+
aStream space.
53+
Time now print24: true on: aStream ]
54+
]
55+
56+
{ #category : #accessing }
57+
TinyLogger >> depth [
58+
^ depth
59+
]
60+
61+
{ #category : #accessing }
62+
TinyLogger >> depth: anObject [
63+
depth := anObject
64+
]
65+
66+
{ #category : #'enable/disable' }
67+
TinyLogger >> disableFileLogger [
68+
self fileLogger: (TinyNilLogger for: self)
69+
]
70+
71+
{ #category : #'enable/disable' }
72+
TinyLogger >> disableLogger [
73+
self disableFileLogger.
74+
self disableTranscriptLogger.
75+
self disableSTDOutLogger
76+
]
77+
78+
{ #category : #'enable/disable' }
79+
TinyLogger >> disableSTDOutLogger [
80+
self stdOutLogger: (TinyNilLogger for: self)
81+
]
82+
83+
{ #category : #'enable/disable' }
84+
TinyLogger >> disableTranscriptLogger [
85+
self transcriptLogger: (TinyNilLogger for: self)
86+
]
87+
88+
{ #category : #'enable/disable' }
89+
TinyLogger >> enableFileLogger [
90+
self fileLogger: (TinyFileLogger for: self)
91+
]
92+
93+
{ #category : #'enable/disable' }
94+
TinyLogger >> enableLogger [
95+
self enableFileLogger.
96+
self enableTranscriptLogger.
97+
self enbleSTDOutLogger
98+
]
99+
100+
{ #category : #'enable/disable' }
101+
TinyLogger >> enableTranscriptLogger [
102+
self transcriptLogger: (TinyTranscriptLogger for: self)
103+
]
104+
105+
{ #category : #'enable/disable' }
106+
TinyLogger >> enbleSTDOutLogger [
107+
self stdOutLogger: (TinySTDOutLogger for: self)
108+
]
109+
110+
{ #category : #accessing }
111+
TinyLogger >> fileLogger [
112+
^ fileLogger
113+
]
114+
115+
{ #category : #accessing }
116+
TinyLogger >> fileLogger: anObject [
117+
fileLogger := anObject
118+
]
119+
120+
{ #category : #nesting }
121+
TinyLogger >> increaseDepthLevel [
122+
self depth: self depth + 1
123+
]
124+
125+
{ #category : #initialization }
126+
TinyLogger >> initialize [
127+
super initialize.
128+
self depth: 0.
129+
self timestampFormatBlock: self defaultTimestampFormatBlock.
130+
self defaultFileName: 'Application.log'.
131+
self enableLogger
132+
]
133+
134+
{ #category : #logging }
135+
TinyLogger >> record: aString [
136+
self transcriptLogger record: aString.
137+
self fileLogger record: aString.
138+
]
139+
140+
{ #category : #accessing }
141+
TinyLogger >> stdOutLogger [
142+
^ stdOutLogger
143+
]
144+
145+
{ #category : #accessing }
146+
TinyLogger >> stdOutLogger: anObject [
147+
stdOutLogger := anObject
148+
]
149+
150+
{ #category : #accessing }
151+
TinyLogger >> timestampFormatBlock [
152+
^ timestampFormatBlock
153+
]
154+
155+
{ #category : #accessing }
156+
TinyLogger >> timestampFormatBlock: anObject [
157+
timestampFormatBlock := anObject
158+
]
159+
160+
{ #category : #accessing }
161+
TinyLogger >> transcriptLogger [
162+
^ transcriptLogger
163+
]
164+
165+
{ #category : #accessing }
166+
TinyLogger >> transcriptLogger: anObject [
167+
transcriptLogger := anObject
168+
]

src/TinyLogger/TinyNilLogger.class.st

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
Class {
2+
#name : #TinyNilLogger,
3+
#superclass : #TinyConcreteLogger,
4+
#category : #'TinyLogger-Core'
5+
}
6+
7+
{ #category : #logging }
8+
TinyNilLogger >> record: aString [
9+
"Do nothing"
10+
]
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
Class {
2+
#name : #TinySTDOutLogger,
3+
#superclass : #TinyConcreteLogger,
4+
#category : #'TinyLogger-Core'
5+
}
6+
7+
{ #category : #logging }
8+
TinySTDOutLogger >> record: aString [
9+
self record: aString on: Stdio stdout
10+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
Class {
2+
#name : #TinyTranscriptLogger,
3+
#superclass : #TinyConcreteLogger,
4+
#category : #'TinyLogger-Core'
5+
}
6+
7+
{ #category : #logging }
8+
TinyTranscriptLogger >> record: aString [
9+
Transcript log: (String streamContents: [ :s | self record: aString on: s ])
10+
]

src/TinyLogger/package.st

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Package { #name : #TinyLogger }

0 commit comments

Comments
 (0)