forked from dotnet/docs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMuxLogger.xml
222 lines (203 loc) · 11.9 KB
/
MuxLogger.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
<Type Name="MuxLogger" FullName="Microsoft.Build.Utilities.MuxLogger">
<TypeSignature Language="C#" Value="public class MuxLogger : Microsoft.Build.Framework.INodeLogger" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit MuxLogger extends System.Object implements class Microsoft.Build.Framework.ILogger, class Microsoft.Build.Framework.INodeLogger" />
<TypeSignature Language="DocId" Value="T:Microsoft.Build.Utilities.MuxLogger" />
<AssemblyInfo>
<AssemblyName>Microsoft.Build.Utilities.v4.0</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>System.Object</BaseTypeName>
</Base>
<Interfaces>
<Interface>
<InterfaceName>Microsoft.Build.Framework.INodeLogger</InterfaceName>
</Interface>
</Interfaces>
<Docs>
<summary>Represents a multiplexing logger. The purpose of this logger is to register and unregister multiple loggers during the build. Supports the Visual Studio IDE scenario in which loggers are registered and unregistered for each project system’s build request. One physical build can have multiple logical builds, each with its own set of loggers.
The <see langword="MuxLogger" /> registers itself with the build manager as a regular central /l style logger. It receives messages from the build manager and routes them to the correct logger, based on the logical build that the message came from.</summary>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
The `MuxLogger` generally functions as follows:
- The `MuxLogger` is registered at the beginning of the build manager’s Begin build.
Any loggers registered before the build manager starts the build get the build-started event at the same time as the `MuxLogger`.
Any loggers registered after the build manager starts the build get a synthesized build-started event. The event cannot be cached because the timestamp of the build-started event is determined when the event is created, and caching the event would give incorrect build times in the loggers registered to the `MuxLogger`.
- The `MuxLogger` is initialized by the build manager
The `MuxLogger` listens to all events on the event source from the build manager and routes events correctly to the registered loggers.
- The `MuxLogger` is shutdown when the build is finished in end build. At this time, it unregisters any loggers attached to it.
- The `MuxLogger` logs the build-finished event when the project-finished event for the first project-started event is seen for each logger.
The `MuxLogger` registers loggers in the following way:
1. The logger is passed to the `MuxLogger.RegisterLogger` method with a submission ID that is used to route a message to that logger.
2. The `MuxLogger` registers the logger to the `MuxLogger` event source.
3. If the build-started event has already been logged, the `MuxLogger` creates a new build-started event and sends it to the logger’s event source.
The `MuxLogger` unregisters loggers in the following way:
1. When a build submission is completed, the `MuxLogger.UnregisterLogger` method is called with the submission ID for the logger.
2. The `MuxLogger` looks up the success state of the project-finished event for the submission ID and logs a build-finished event to the logger.
3. The `MuxLogger` cleans up the event source.
Note that the unregister comes from a thread other than the logging thread and a synchronization issue could occur if unregister is called while events are being logged.
]]></format>
</remarks>
</Docs>
<Members>
<Member MemberName=".ctor">
<MemberSignature Language="C#" Value="public MuxLogger ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
<MemberSignature Language="DocId" Value="M:Microsoft.Build.Utilities.MuxLogger.#ctor" />
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyName>Microsoft.Build.Utilities.v4.0</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<Docs>
<summary>Creates a new instance of the multiplexing logger.</summary>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="Initialize">
<MemberSignature Language="C#" Value="public void Initialize (Microsoft.Build.Framework.IEventSource eventSource);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Initialize(class Microsoft.Build.Framework.IEventSource eventSource) cil managed" />
<MemberSignature Language="DocId" Value="M:Microsoft.Build.Utilities.MuxLogger.Initialize(Microsoft.Build.Framework.IEventSource)" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>Microsoft.Build.Utilities.v4.0</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="eventSource" Type="Microsoft.Build.Framework.IEventSource" />
</Parameters>
<Docs>
<param name="eventSource">The event source.</param>
<summary>Initialize the <see langword="MuxLogger" /> instance with the specified event source.</summary>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="Initialize">
<MemberSignature Language="C#" Value="public void Initialize (Microsoft.Build.Framework.IEventSource eventSource, int maxNodeCount);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Initialize(class Microsoft.Build.Framework.IEventSource eventSource, int32 maxNodeCount) cil managed" />
<MemberSignature Language="DocId" Value="M:Microsoft.Build.Utilities.MuxLogger.Initialize(Microsoft.Build.Framework.IEventSource,System.Int32)" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>Microsoft.Build.Utilities.v4.0</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="eventSource" Type="Microsoft.Build.Framework.IEventSource" />
<Parameter Name="maxNodeCount" Type="System.Int32" />
</Parameters>
<Docs>
<param name="eventSource">The event source.</param>
<param name="maxNodeCount">The maximum number of nodes.</param>
<summary>Initialize the <see langword="MuxLogger" /> instance with the specified event source and specified maximum number of nodes.</summary>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="Parameters">
<MemberSignature Language="C#" Value="public string Parameters { get; set; }" />
<MemberSignature Language="ILAsm" Value=".property instance string Parameters" />
<MemberSignature Language="DocId" Value="P:Microsoft.Build.Utilities.MuxLogger.Parameters" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyName>Microsoft.Build.Utilities.v4.0</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.String</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets and sets the Parameters attribute, required by the <see langword="ILogger" /> interface.</summary>
<value>Returns the Parameters attribute.</value>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="RegisterLogger">
<MemberSignature Language="C#" Value="public void RegisterLogger (int submissionId, Microsoft.Build.Framework.ILogger logger);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance void RegisterLogger(int32 submissionId, class Microsoft.Build.Framework.ILogger logger) cil managed" />
<MemberSignature Language="DocId" Value="M:Microsoft.Build.Utilities.MuxLogger.RegisterLogger(System.Int32,Microsoft.Build.Framework.ILogger)" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>Microsoft.Build.Utilities.v4.0</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="submissionId" Type="System.Int32" />
<Parameter Name="logger" Type="Microsoft.Build.Framework.ILogger" />
</Parameters>
<Docs>
<param name="submissionId">The submission ID of the logger being registered.</param>
<param name="logger">The logger to register.</param>
<summary>Registers a logger on the <see langword="MuxLogger" /> and raises a build-started event if the build-started event has already been logged.</summary>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="Shutdown">
<MemberSignature Language="C#" Value="public void Shutdown ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Shutdown() cil managed" />
<MemberSignature Language="DocId" Value="M:Microsoft.Build.Utilities.MuxLogger.Shutdown" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>Microsoft.Build.Utilities.v4.0</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters />
<Docs>
<summary>Shuts down the <see langword="MuxLogger" /> and clears out any state.</summary>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="UnregisterLoggers">
<MemberSignature Language="C#" Value="public bool UnregisterLoggers (int submissionId);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance bool UnregisterLoggers(int32 submissionId) cil managed" />
<MemberSignature Language="DocId" Value="M:Microsoft.Build.Utilities.MuxLogger.UnregisterLoggers(System.Int32)" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>Microsoft.Build.Utilities.v4.0</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="submissionId" Type="System.Int32" />
</Parameters>
<Docs>
<param name="submissionId">The submission ID of the logger to be removed.</param>
<summary>Removes the specified logger from the MuxLogger.</summary>
<returns>Returns <see langword="true" /> if the method is successful in removing the logger, otherwise, returns <see langword="false" />.</returns>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="Verbosity">
<MemberSignature Language="C#" Value="public Microsoft.Build.Framework.LoggerVerbosity Verbosity { get; set; }" />
<MemberSignature Language="ILAsm" Value=".property instance valuetype Microsoft.Build.Framework.LoggerVerbosity Verbosity" />
<MemberSignature Language="DocId" Value="P:Microsoft.Build.Utilities.MuxLogger.Verbosity" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyName>Microsoft.Build.Utilities.v4.0</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>Microsoft.Build.Framework.LoggerVerbosity</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets and sets the Verbosity attribute, required by the <see langword="ILogger" /> interface.</summary>
<value>Returns the Verbosity attribute.</value>
<remarks>To be added.</remarks>
</Docs>
</Member>
</Members>
</Type>