Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commite232660

Browse files
cloudRoutineKevinRansom
authored andcommitted
basic logging setup (dotnet#1881)
1 parent77c8dff commite232660

File tree

4 files changed

+206
-92
lines changed

4 files changed

+206
-92
lines changed

‎vsintegration/src/FSharp.Editor/FSharp.Editor.fsproj‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,11 @@
2828
</PropertyGroup>
2929
<ItemGroup>
3030
<CompileInclude="AssemblyInfo.fs" />
31+
<CompileInclude="Pervasive.fs" />
3132
<CompileInclude="CommonConstants.fs" />
3233
<CompileInclude="CommonRoslynHelpers.fs" />
3334
<CompileInclude="CommonHelpers.fs" />
35+
<CompileInclude="Logging.fs" />
3436
<CompileInclude="LanguageService.fs" />
3537
<CompileInclude="Classification\ColorizationService.fs" />
3638
<CompileInclude="Utilities\BraceMatchingService.fs" />
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
namespaceMicrosoft.VisualStudio.FSharp.Logging
2+
openSystem
3+
openSystem.Collections.Generic
4+
openSystem.Windows.Media
5+
openSystem.ComponentModel.Composition
6+
openMicrosoft.VisualStudio.FSharp
7+
openMicrosoft.VisualStudio
8+
openMicrosoft.VisualStudio.Text
9+
openMicrosoft.VisualStudio.Text.Classification
10+
openMicrosoft.VisualStudio.Utilities
11+
openMicrosoft.VisualStudio.Shell
12+
openMicrosoft.VisualStudio.Shell.Interop
13+
openMicrosoft.VisualStudio.ComponentModelHost
14+
15+
[<RequireQualifiedAccess>]
16+
typeLogType=
17+
| Info
18+
| Warn
19+
| Error
20+
| Message
21+
overridex.ToString()=
22+
match xwith
23+
| Message->"Message"
24+
| Info->"Information"
25+
| Warn->"Warning"
26+
| Error->"Error"
27+
28+
29+
moduleConfig=
30+
31+
let [<Literal>]fsharpOutputGuidString="E721F849-446C-458C-997A-99E14A04CFD3"
32+
letfsharpOutputGuid= Guid fsharpOutputGuidString
33+
34+
openConfig
35+
36+
37+
38+
type[<Export>]Logger[<ImportingConstructor>]
39+
([<Import(typeof<SVsServiceProvider>)>] serviceProvider: IServiceProvider)=
40+
letoutputWindow= serviceProvider.GetService<SVsOutputWindow,IVsOutputWindow>()
41+
42+
letcreatePane()=
43+
outputWindow.CreatePane
44+
(ref fsharpOutputGuid,"F# Language Service", Convert.ToInt32true, Convert.ToInt32false)|> ignore
45+
do createPane()
46+
47+
letgetPane()=
48+
match outputWindow.GetPane(ref fsharpOutputGuid)with
49+
|0, pane-> pane.Activate()|>ignore; Some pane
50+
|_,_-> None
51+
52+
static let mutableglobalServiceProvider:IServiceProvider option= None
53+
54+
static memberGlobalServiceProvider
55+
with get()= globalServiceProvider|> Option.getOrElse(ServiceProvider.GlobalProvider:> IServiceProvider)
56+
andset v= globalServiceProvider<- Some v
57+
58+
member__.FSharpLoggingPane
59+
with get()= getPane()|>function
60+
| Some pane-> Some pane
61+
| None-> createPane(); getPane()
62+
63+
64+
memberself.Log(msgType:LogType,msg:string)=
65+
lettime= DateTime.Now.ToString("hh:mm:ss tt")
66+
match self.FSharpLoggingPane, msgTypewith
67+
| None,_->()
68+
| Some pane, LogType.Message-> String.Format("[F#][{0}{1}] {2}{3}","", time, msg, Environment.NewLine)|> pane.OutputString|> ignore
69+
| Some pane, LogType.Info-> String.Format("[F#][{0}{1}] {2}{3}","INFO", time, msg, Environment.NewLine)|> pane.OutputString|> ignore
70+
| Some pane, LogType.Warn-> String.Format("[F#][{0}{1}] {2}{3}","WARN", time, msg, Environment.NewLine)|> pane.OutputString|> ignore
71+
| Some pane, LogType.Error-> String.Format("[F#][{0}{1}] {2}{3}","ERROR", time, msg, Environment.NewLine)|> pane.OutputString|> ignore
72+
73+
74+
[<AutoOpen>]
75+
moduleLogging=
76+
77+
letprivatelogger=lazy Logger(Logger.GlobalServiceProvider)
78+
letprivatelog logType msg= logger.Value.Log(logType,msg)
79+
80+
letlogMsg msg= log LogType.Message msg
81+
letlogInfo msg= log LogType.Info msg
82+
letlogWarning msg= log LogType.Warn msg
83+
letlogError msg= log LogType.Error msg
84+
85+
letlogMsgf msg= Printf.kprintf(log LogType.Message) msg
86+
letlogInfof msg= Printf.kprintf(log LogType.Info) msg
87+
letlogWarningf msg= Printf.kprintf(log LogType.Warn) msg
88+
letlogErrorf msg= Printf.kprintf(log LogType.Error) msg
89+
90+
letlogException(ex:Exception)=
91+
logErrorf"Exception Message:%s\nStack Trace:%s" ex.Message ex.StackTrace
92+
93+
letlogExceptionWithContext(ex:Exception,context)=
94+
logErrorf"Context:%s\nException Message:%s\nStack Trace:%s" context ex.Message ex.StackTrace
95+
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[<AutoOpen>]
2+
moduleMicrosoft.VisualStudio.FSharp.Pervasive
3+
4+
openSystem
5+
6+
7+
[<RequireQualifiedAccess>]
8+
[<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
9+
moduleOption=
10+
11+
/// Gets the value associated with the option or the supplied default value.
12+
let inlinegetOrElse v=function
13+
| Some x-> x| None-> v
14+
15+
typeSystem.IServiceProviderwith
16+
memberx.GetService<'T>()= x.GetService(typeof<'T>):?> 'T
17+
memberx.GetService<'S,'T>()= x.GetService(typeof<'S>):?> 'T

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp