Skip to content

Commit afefba4

Browse files
authored
Use Microsoft.Extensions.Logging instead of FsLogLib.fs (#254)
1 parent 0d24cd2 commit afefba4

15 files changed

+113
-1408
lines changed

Directory.Packages.props

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,12 @@
2929
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.Common" Version="$(RoslynPackageVersion)" />
3030
<PackageVersion Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" Version="$(RoslynPackageVersion)" />
3131
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="9.0.8" />
32+
<PackageVersion Include="Microsoft.Extensions.Logging" Version="9.0.8" />
33+
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="9.0.8" />
3234
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
3335
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
3436
<PackageVersion Include="NUnit" Version="3.14.0" />
3537
<PackageVersion Include="NUnit3TestAdapter" Version="4.6.0" />
3638
<PackageVersion Include="System.Collections.Immutable" Version="9.0.0" />
37-
<PackageVersion Include="Serilog" Version="3.1.1" />
38-
<PackageVersion Include="Serilog.Sinks.Console" Version="5.0.1" />
39-
<PackageVersion Include="Serilog.Sinks.Async" Version="1.5.0" />
4039
</ItemGroup>
4140
</Project>

src/CSharpLanguageServer/CSharpLanguageServer.fsproj

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,8 @@
8383
<PackageReference Include="ICSharpCode.Decompiler" />
8484
<PackageReference Include="Ionide.LanguageServerProtocol" />
8585
<PackageReference Include="Microsoft.Extensions.Caching.Memory" />
86+
<PackageReference Include="Microsoft.Extensions.Logging" />
87+
<PackageReference Include="Microsoft.Extensions.Logging.Console" />
8688
<PackageReference Include="Newtonsoft.Json" />
8789
<PackageReference Include="Microsoft.Build.Locator" />
8890
<PackageReference Include="Microsoft.Build" ExcludeAssets="runtime" />
@@ -99,8 +101,5 @@
99101
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" />
100102
<PackageReference Include="Microsoft.CodeAnalysis.Features" />
101103
<PackageReference Include="Microsoft.CodeAnalysis.Workspaces.MSBuild" />
102-
<PackageReference Include="Serilog" />
103-
<PackageReference Include="Serilog.Sinks.Console" />
104-
<PackageReference Include="Serilog.Sinks.Async" />
105104
</ItemGroup>
106105
</Project>

src/CSharpLanguageServer/Handlers/CodeAction.fs

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,23 @@ open Microsoft.CodeAnalysis.Text
1515
open Ionide.LanguageServerProtocol.Server
1616
open Ionide.LanguageServerProtocol.Types
1717
open Ionide.LanguageServerProtocol.JsonRpc
18+
open Microsoft.Extensions.Logging
1819

1920
open CSharpLanguageServer.Logging
2021
open CSharpLanguageServer.Conversions
2122
open CSharpLanguageServer.Types
2223
open CSharpLanguageServer.State
24+
open CSharpLanguageServer.Util
25+
2326

2427
type CSharpCodeActionResolutionData =
2528
{ TextDocumentUri: string
2629
Range: Range }
2730

31+
2832
[<RequireQualifiedAccess>]
2933
module CodeAction =
30-
let private logger = LogProvider.getLoggerByName "CodeAction"
34+
let private logger = Logging.getLoggerByName "CodeAction"
3135

3236
let private instantiateRoslynProviders<'ProviderType> (isValidProvider: Type -> bool) =
3337
let assemblies =
@@ -81,11 +85,10 @@ module CodeAction =
8185
try
8286
do! refactoringProvider.ComputeRefactoringsAsync(codeActionContext) |> Async.AwaitTask
8387
with ex ->
84-
logger.error (
85-
Log.setMessage "cannot compute refactorings for {provider}"
86-
>> Log.addContext "provider" (string refactoringProvider)
87-
>> Log.addException ex
88-
)
88+
logger.LogError(
89+
ex,
90+
"cannot compute refactorings for {provider}",
91+
refactoringProvider)
8992

9093
// register code fixes
9194
let! semanticModel = doc.GetSemanticModelAsync(ct) |> Async.AwaitTask
@@ -127,10 +130,7 @@ module CodeAction =
127130
try
128131
do! codeFixProvider.RegisterCodeFixesAsync(codeFixContext) |> Async.AwaitTask
129132
with ex ->
130-
logger.error (
131-
Log.setMessage "error in RegisterCodeFixesAsync()"
132-
>> Log.addException ex
133-
)
133+
logger.LogError(ex, "error in RegisterCodeFixesAsync()")
134134

135135
let unwrapRoslynCodeAction (ca: Microsoft.CodeAnalysis.CodeActions.CodeAction) =
136136
let nestedCAProp =
@@ -156,10 +156,7 @@ module CodeAction =
156156
let! value = op ()
157157
return Some value
158158
with ex ->
159-
logger.warn (
160-
Log.setMessage "Error in asyncMaybeOnException"
161-
>> Log.addException ex
162-
)
159+
logger.LogWarning(ex, "Error in asyncMaybeOnException")
163160
return None
164161
}
165162

@@ -427,10 +424,7 @@ module CodeAction =
427424
let! resolvedCA = toResolvedLspCodeAction ca
428425

429426
if resolvedCA.IsNone then
430-
logger.error (
431-
Log.setMessage "handleCodeActionResolve: could not resolve {action} - null"
432-
>> Log.addContext "action" (string ca)
433-
)
427+
logger.LogError("handleCodeActionResolve: could not resolve {action} - null", ca)
434428

435429
return resolvedCA.Value
436430
}

src/CSharpLanguageServer/Handlers/Completion.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ open CSharpLanguageServer.Logging
1616

1717
[<RequireQualifiedAccess>]
1818
module Completion =
19-
let private _logger = LogProvider.getLoggerByName "Completion"
19+
let private _logger = Logging.getLoggerByName "Completion"
2020

2121
let private completionItemMemoryCache = new MemoryCache(new MemoryCacheOptions())
2222

src/CSharpLanguageServer/Handlers/Initialization.fs

Lines changed: 18 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ open Ionide.LanguageServerProtocol
99
open Ionide.LanguageServerProtocol.Types
1010
open Ionide.LanguageServerProtocol.Server
1111
open Ionide.LanguageServerProtocol.JsonRpc
12+
open Microsoft.Extensions.Logging
1213

1314
open CSharpLanguageServer.State
1415
open CSharpLanguageServer.State.ServerState
@@ -17,7 +18,7 @@ open CSharpLanguageServer.Logging
1718

1819
[<RequireQualifiedAccess>]
1920
module Initialization =
20-
let private logger = LogProvider.getLoggerByName "Initialization"
21+
let private logger = Logging.getLoggerByName "Initialization"
2122

2223
let handleInitialize (lspClient: ILspClient)
2324
(setupTimer: unit -> unit)
@@ -32,19 +33,14 @@ module Initialization =
3233

3334
let serverName = "csharp-ls"
3435
let serverVersion = Assembly.GetExecutingAssembly().GetName().Version |> string
35-
logger.info (
36-
Log.setMessage "initializing, {name} version {version}"
37-
>> Log.addContext "name" serverName
38-
>> Log.addContext "version" serverVersion
39-
)
36+
logger.LogInformation("initializing, {name} version {version}", serverName, serverVersion)
4037

4138
do! windowShowMessage(
4239
sprintf "csharp-ls: initializing, version %s" serverVersion)
4340

44-
logger.info (
45-
Log.setMessage "{name} is released under MIT license and is not affiliated with Microsoft Corp.; see https://github.com/razzmatazz/csharp-language-server"
46-
>> Log.addContext "name" serverName
47-
)
41+
logger.LogInformation(
42+
"{serverName} is released under MIT license and is not affiliated with Microsoft Corp.; see https://github.com/razzmatazz/csharp-language-server",
43+
serverName)
4844

4945
do! windowShowMessage(
5046
sprintf "csharp-ls: %s is released under MIT license and is not affiliated with Microsoft Corp.; see https://github.com/razzmatazz/csharp-language-server" serverName)
@@ -65,19 +61,15 @@ module Initialization =
6561

6662
let vsInstance = vsInstanceList |> Seq.head
6763

68-
logger.info(
69-
Log.setMessage "MSBuildLocator: will register \"{vsInstanceName}\", Version={vsInstanceVersion} as default instance"
70-
>> Log.addContext "vsInstanceName" vsInstance.Name
71-
>> Log.addContext "vsInstanceVersion" (string vsInstance.Version)
72-
)
64+
logger.LogInformation(
65+
"MSBuildLocator: will register \"{vsInstanceName}\", Version={vsInstanceVersion} as default instance",
66+
vsInstance.Name,
67+
(string vsInstance.Version))
7368

7469
MSBuildLocator.RegisterInstance(vsInstance)
7570

7671
(*
77-
logger.trace (
78-
Log.setMessage "handleInitialize: p.Capabilities={caps}"
79-
>> Log.addContext "caps" (serialize p.Capabilities)
80-
)
72+
logger.LogTrace("handleInitialize: p.Capabilities={caps}", serialize p.Capabilities))
8173
*)
8274
context.Emit(ClientCapabilityChange p.Capabilities)
8375

@@ -111,9 +103,7 @@ module Initialization =
111103
(_p: unit)
112104
: Async<LspResult<unit>> =
113105
async {
114-
logger.trace (
115-
Log.setMessage "handleInitialized: \"initialized\" notification received from client"
116-
)
106+
logger.LogTrace("handleInitialized: \"initialized\" notification received from client")
117107

118108
let registrationParams = { Registrations = getRegistrations context.ClientCapabilities |> List.toArray }
119109

@@ -122,16 +112,10 @@ module Initialization =
122112
match! lspClient.ClientRegisterCapability registrationParams with
123113
| Ok _ -> ()
124114
| Error error ->
125-
logger.warn(
126-
Log.setMessage "handleInitialized: didChangeWatchedFiles registration has failed with {error}"
127-
>> Log.addContext "error" (string error)
128-
)
115+
logger.LogWarning("handleInitialized: didChangeWatchedFiles registration has failed with {error}", error)
129116
with
130117
| ex ->
131-
logger.warn(
132-
Log.setMessage "handleInitialized: didChangeWatchedFiles registration has failed with {error}"
133-
>> Log.addContext "error" (string ex)
134-
)
118+
logger.LogWarning("handleInitialized: didChangeWatchedFiles registration has failed with {error}", string ex)
135119

136120
//
137121
// retrieve csharp settings
@@ -169,18 +153,17 @@ module Initialization =
169153
| _ -> ()
170154
with
171155
| ex ->
172-
logger.warn(
173-
Log.setMessage "handleInitialized: could not retrieve `csharp` workspace configuration section: {error}"
174-
>> Log.addContext "error" (ex |> string)
156+
logger.LogWarning(
157+
"handleInitialized: could not retrieve `csharp` workspace configuration section: {error}",
158+
ex |> string
175159
)
176160

177161
//
178162
// start loading the solution
179163
//
180164
stateActor.Post(SolutionReloadRequest (TimeSpan.FromMilliseconds(100)))
181165

182-
logger.trace(
183-
Log.setMessage "handleInitialized: OK")
166+
logger.LogTrace("handleInitialized: OK")
184167

185168
return Ok()
186169
}

src/CSharpLanguageServer/Handlers/Rename.fs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ open Microsoft.CodeAnalysis.Rename
1010
open Ionide.LanguageServerProtocol.Server
1111
open Ionide.LanguageServerProtocol.Types
1212
open Ionide.LanguageServerProtocol.JsonRpc
13+
open Microsoft.Extensions.Logging
1314

1415
open CSharpLanguageServer.State
1516
open CSharpLanguageServer.Logging
@@ -19,7 +20,7 @@ open CSharpLanguageServer.Util
1920

2021
[<RequireQualifiedAccess>]
2122
module Rename =
22-
let private logger = LogProvider.getLoggerByName "Rename"
23+
let private logger = Logging.getLoggerByName "Rename"
2324

2425
let private lspDocChangesFromSolutionDiff
2526
(ct: CancellationToken)
@@ -139,9 +140,9 @@ module Rename =
139140
| :? ForEachStatementSyntax as forEachSyn -> forEachSyn.Identifier.Span |> Some
140141
| :? LocalFunctionStatementSyntax as localFunStSyn -> localFunStSyn.Identifier.Span |> Some
141142
| node ->
142-
logger.debug (
143-
Log.setMessage "textDocument/prepareRename: unhandled Type={type}"
144-
>> Log.addContext "type" (node.GetType().Name)
143+
logger.LogDebug(
144+
"textDocument/prepareRename: unhandled Type={type}",
145+
(node.GetType().Name)
145146
)
146147
None
147148

src/CSharpLanguageServer/Handlers/TextDocumentSync.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ open CSharpLanguageServer.Logging
1717

1818
[<RequireQualifiedAccess>]
1919
module TextDocumentSync =
20-
let private logger = LogProvider.getLoggerByName "TextDocumentSync"
20+
let private logger = Logging.getLoggerByName "TextDocumentSync"
2121

2222
let private applyLspContentChangesOnRoslynSourceText
2323
(changes: TextDocumentContentChangeEvent[])

src/CSharpLanguageServer/Handlers/Workspace.fs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ open CSharpLanguageServer.Types
1717

1818
[<RequireQualifiedAccess>]
1919
module Workspace =
20-
let private logger = LogProvider.getLoggerByName "Workspace"
20+
let private logger = Logging.getLoggerByName "Workspace"
2121

2222
let dynamicRegistration (clientCapabilities: ClientCapabilities) =
2323
clientCapabilities.Workspace

0 commit comments

Comments
 (0)