16
16
use PHPUnit \Framework \TestCase ;
17
17
use Symfony \Bridge \Monolog \Handler \ConsoleHandler ;
18
18
use Symfony \Bundle \MonologBundle \DependencyInjection \Compiler \AddProcessorsPass ;
19
+ use Symfony \Bundle \MonologBundle \DependencyInjection \Compiler \LoggerChannelPass ;
19
20
use Symfony \Component \Config \FileLocator ;
20
21
use Symfony \Component \DependencyInjection \ContainerBuilder ;
21
22
use Symfony \Component \DependencyInjection \Definition ;
@@ -54,6 +55,18 @@ public function testHandlerProcessors()
54
55
$ this ->assertCount (2 , $ calls );
55
56
$ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor+35+25 ' , 'TestClass ' )]], $ calls [0 ]);
56
57
$ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor+25+35 ' , 'TestClass ' )]], $ calls [1 ]);
58
+
59
+ $ service = $ container ->getDefinition ('monolog.logger ' );
60
+ $ calls = $ service ->getMethodCalls ();
61
+ $ this ->assertCount (2 , $ calls );
62
+ $ this ->assertEquals (['useMicrosecondTimestamps ' , ['%monolog.use_microseconds% ' ]], $ calls [0 ]);
63
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor_all_channels+0 ' , 'TestClass ' )]], $ calls [1 ]);
64
+
65
+ $ service = $ container ->getDefinition ('monolog.logger.test ' );
66
+ $ calls = $ service ->getMethodCalls ();
67
+ $ this ->assertCount (2 , $ calls );
68
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor_test_channel-25 ' , 'TestClass ' )]], $ calls [0 ]);
69
+ $ this ->assertEquals (['pushProcessor ' , [new TypedReference ('processor_all_channels+0 ' , 'TestClass ' )]], $ calls [1 ]);
57
70
}
58
71
59
72
public function testFailureOnHandlerWithoutPushProcessor ()
@@ -88,6 +101,9 @@ protected function getContainer()
88
101
$ loader = new XmlFileLoader ($ container , new FileLocator (__DIR__ .'/../../../Resources/config ' ));
89
102
$ loader ->load ('monolog.xml ' );
90
103
104
+ $ container ->setParameter ('monolog.additional_channels ' , ['test ' ]);
105
+ $ container ->setParameter ('monolog.handlers_to_channels ' , []);
106
+
91
107
$ definition = $ container ->getDefinition ('monolog.logger_prototype ' );
92
108
$ container ->setParameter ('monolog.handler.console.class ' , ConsoleHandler::class);
93
109
$ container ->setDefinition ('monolog.handler.test ' , new Definition ('%monolog.handler.console.class% ' , [100 , false ]));
@@ -100,39 +116,48 @@ protected function getContainer()
100
116
$ definition ->addMethodCall ('pushHandler ' , [new Reference ('monolog.handler.priority_test ' )]);
101
117
$ definition ->addMethodCall ('pushHandler ' , [new Reference ('monolog.handler.priority_test_2 ' )]);
102
118
103
- $ service = new Definition ('TestClass ' , [ ' false ' , new Reference ( ' logger ' )] );
119
+ $ service = new Definition ('TestClass ' );
104
120
$ service ->addTag ('monolog.processor ' , ['handler ' => 'test ' ]);
105
121
$ container ->setDefinition ('test ' , $ service );
106
122
107
- $ service = new Definition ('TestClass ' , [ ' false ' , new Reference ( ' logger ' )] );
123
+ $ service = new Definition ('TestClass ' );
108
124
$ service ->addTag ('monolog.processor ' , ['handler ' => 'test2 ' ]);
109
125
$ container ->setDefinition ('test2 ' , $ service );
110
126
111
- $ service = new Definition ('TestClass ' , [ ' false ' , new Reference ( ' logger ' )] );
127
+ $ service = new Definition ('TestClass ' );
112
128
$ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test ' , 'priority ' => 10 ]);
113
129
$ container ->setDefinition ('processor+10 ' , $ service );
114
130
115
- $ service = new Definition ('TestClass ' , [ ' false ' , new Reference ( ' logger ' )] );
131
+ $ service = new Definition ('TestClass ' );
116
132
$ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test ' , 'priority ' => -10 ]);
117
133
$ container ->setDefinition ('processor-10 ' , $ service );
118
134
119
- $ service = new Definition ('TestClass ' , [ ' false ' , new Reference ( ' logger ' )] );
135
+ $ service = new Definition ('TestClass ' );
120
136
$ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test ' , 'priority ' => 20 ]);
121
137
$ container ->setDefinition ('processor+20 ' , $ service );
122
138
123
- $ service = new Definition ('TestClass ' , [ ' false ' , new Reference ( ' logger ' )] );
139
+ $ service = new Definition ('TestClass ' );
124
140
$ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test ' , 'priority ' => 35 ]);
125
141
$ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test_2 ' , 'priority ' => 25 ]);
126
142
$ container ->setDefinition ('processor+35+25 ' , $ service );
127
143
128
- $ service = new Definition ('TestClass ' , [ ' false ' , new Reference ( ' logger ' )] );
144
+ $ service = new Definition ('TestClass ' );
129
145
$ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test ' , 'priority ' => 25 ]);
130
146
$ service ->addTag ('monolog.processor ' , ['handler ' => 'priority_test_2 ' , 'priority ' => 35 ]);
131
147
$ container ->setDefinition ('processor+25+35 ' , $ service );
132
148
149
+ $ service = new Definition ('TestClass ' );
150
+ $ service ->addTag ('monolog.processor ' , ['priority ' => 0 ]);
151
+ $ container ->setDefinition ('processor_all_channels+0 ' , $ service );
152
+
153
+ $ service = new Definition ('TestClass ' );
154
+ $ service ->addTag ('monolog.processor ' , ['channel ' => 'test ' , 'priority ' => -25 ]);
155
+ $ container ->setDefinition ('processor_test_channel-25 ' , $ service );
156
+
133
157
$ container ->getCompilerPassConfig ()->setOptimizationPasses ([]);
134
158
$ container ->getCompilerPassConfig ()->setRemovingPasses ([]);
135
- $ container ->addCompilerPass (new AddProcessorsPass ());
159
+ $ container ->addCompilerPass ($ channelPass = new LoggerChannelPass ());
160
+ $ container ->addCompilerPass (new AddProcessorsPass ($ channelPass ));
136
161
$ container ->compile ();
137
162
138
163
return $ container ;
0 commit comments