Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
BailunTrace
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
wms
BailunTrace
Commits
a4c1716d
Commit
a4c1716d
authored
Apr 09, 2020
by
huangzhihong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
更新 README.md
parent
ffde33dd
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
66 additions
and
135 deletions
+66
-135
README.md
doc/README.md
+10
-3
skyapm-track.png
doc/skyapm-track.png
+0
-0
SimpleApi.Downstream.csproj
samples/SimpleApi.Downstream/SimpleApi.Downstream.csproj
+1
-0
ValuesController.cs
samples/SimpleApi/Controllers/ValuesController.cs
+8
-1
IUserApi.cs
samples/SimpleApi/MicroServices/IUserApi.cs
+0
-1
SimpleApi.csproj
samples/SimpleApi/SimpleApi.csproj
+1
-0
IUserApi.cs
samples/SimpleConsole/MicroServices/IUserApi.cs
+0
-1
Program.cs
samples/SimpleConsole/Program.cs
+3
-3
SimpleConsole.csproj
samples/SimpleConsole/SimpleConsole.csproj
+1
-0
Worker.cs
samples/SimpleConsole/Worker.cs
+1
-1
TraceInterceptAttribute.cs
...ServiceFabric.Trace/Attributes/TraceInterceptAttribute.cs
+0
-112
Bailun.ServiceFabric.Trace.csproj
...lun.ServiceFabric.Trace/Bailun.ServiceFabric.Trace.csproj
+0
-1
GenericHostBuilderExtensions.cs
...ric.Trace/Extensions/Host/GenericHostBuilderExtensions.cs
+20
-6
WebHostBuilderExtensions.cs
...eFabric.Trace/Extensions/Host/WebHostBuilderExtensions.cs
+21
-6
No files found.
doc/README.md
View file @
a4c1716d
...
...
@@ -30,6 +30,7 @@
}
```
- [Skywalking 配置](#skywalking)
1.
**Console**
配置
-
`Program.cs`
...
...
@@ -77,7 +78,7 @@
1.
**appsettings.json**
1. 移除所有 `Microsoft.Extension.logging
.ILogger` 的
配置
1. 移除所有 `Microsoft.Extension.logging
` 的相关原生
配置
1. 添加 `Serilog` 、`Exceptionless` 的配置
...
...
@@ -241,7 +242,7 @@
Serilog.Log.Logger.Information("Disk quota {Quota} MB exceeded by {Broker}", 12, "RabbitMQ"); //自定义扩展属性 Quota 、Broker
```
1.
检索
1.
<b
id=
"exceptionless"
>
检索
</b>
> Exceptionless 支持 Key:Value 格式检索
...
...
@@ -256,7 +257,7 @@

##
五、使用 `APM` 扩展日志 —— `SkyWalking`
##
<b id="skywalking">五、使用 `APM` 扩展日志 —— `SkyWalking`</b>
1.
客户端
-
SkyAPM.Agent.AspNetCore
...
...
@@ -284,3 +285,8 @@
-
通过环境变量
`SKYWALKING__SERVICENAME=sample_app`
配置服务名称,不配置则使用
`skyapm.json`
的
`ServiceName`
1.
自定义
`Diagnostic`
上传跟踪信息
1.
追踪与检索
> 通过 `TraceId` 到 `Exceptionless` 检索相关日志,检索方式参考:[Exceptionless检索](#exceptionless)
!
[
search
](
./skyapm-track.png
)
\ No newline at end of file
doc/skyapm-track.png
0 → 100644
View file @
a4c1716d
109 KB
samples/SimpleApi.Downstream/SimpleApi.Downstream.csproj
View file @
a4c1716d
...
...
@@ -11,6 +11,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
<PackageReference Include="WebApiClient.JIT" Version="1.1.3" />
</ItemGroup>
<ItemGroup>
...
...
samples/SimpleApi/Controllers/ValuesController.cs
View file @
a4c1716d
...
...
@@ -29,7 +29,14 @@ namespace SimpleApi.Controllers
//Log.Logger.SetModule("Test2").SetBussinessId("b1").Information("{BusinessId} ......");
//Log.Logger.SetModule("Test2").Information("{BusinessId} ......");
Log
.
Logger
.
SetModule
(
"Test3"
).
SetBussinessId
(
"b2"
).
Information
(
"【api1】...{BusinessId} ......"
);
Serilog
.
Log
.
Logger
.
ForContext
(
typeof
(
ValuesController
))
.
SetModule
(
"库存管理"
)
//扩展属性 Module
.
SetBussinessId
(
"ware123sku456"
)
//扩展属性 BusinessId
.
SetTags
(
"stock"
,
"incr"
,
"action"
)
//Tag
.
AddProperty
(
"CustomProperty1"
,
"CustomValue1"
)
//自定义扩展属性 CustomProperty1
.
AddProperty
(
"CustomProperty2"
,
new
{
Name
=
"Jack"
,
Age
=
18
})
//自定义扩展属性 CustomProperty2
.
Information
(
"[api1] Disk quota {Quota} MB exceeded by {Broker}"
,
12
,
"RabbitMQ"
);
//自定义扩展属性 Quota 、Broker
return
userApi
.
GetAsync
(
"dafadfdsfafd"
).
InvokeAsync
().
GetAwaiter
().
GetResult
();
}
...
...
samples/SimpleApi/MicroServices/IUserApi.cs
View file @
a4c1716d
using
Bailun.ServiceFabric.Trace.Attributes
;
using
System
;
using
System.Collections.Generic
;
using
System.Linq
;
...
...
samples/SimpleApi/SimpleApi.csproj
View file @
a4c1716d
...
...
@@ -11,6 +11,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
<PackageReference Include="WebApiClient.JIT" Version="1.1.3" />
</ItemGroup>
<ItemGroup>
...
...
samples/SimpleConsole/MicroServices/IUserApi.cs
View file @
a4c1716d
using
Bailun.ServiceFabric.Trace.Attributes
;
using
System.Collections.Generic
;
using
WebApiClient
;
using
WebApiClient.Attributes
;
...
...
samples/SimpleConsole/Program.cs
View file @
a4c1716d
...
...
@@ -14,8 +14,8 @@ using Bailun.Diagnostics.HttpClient;
using
System.Linq
;
using
Microsoft.Extensions.DependencyInjection.Extensions
;
namespace
SimpleConsole
{
namespace
SimpleConsole
{
class
Program
{
static
void
Main
(
string
[]
args
)
...
...
@@ -53,4 +53,4 @@ namespace SimpleConsole
.
UseBailunTrace
(
true
,
true
);
}
}
}
samples/SimpleConsole/SimpleConsole.csproj
View file @
a4c1716d
...
...
@@ -9,6 +9,7 @@
<PackageReference Include="Microsoft.Extensions.Configuration.CommandLine" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="2.1.1" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="2.1.1" />
<PackageReference Include="WebApiClient.JIT" Version="1.1.3" />
</ItemGroup>
<ItemGroup>
...
...
samples/SimpleConsole/Worker.cs
View file @
a4c1716d
...
...
@@ -39,7 +39,7 @@ namespace SimpleConsole
await
_userApi
.
GetAsync
(
index
.
ToString
());
Log
.
Logger
.
Information
(
$"
【console】...
第
{
index
}
次调用............... "
);
Log
.
Logger
.
Information
(
$"
[console]
第
{
index
}
次调用............... "
);
//**************************TODO:业务逻辑**************************
...
...
src/Bailun.ServiceFabric.Trace/Attributes/TraceInterceptAttribute.cs
deleted
100644 → 0
View file @
ffde33dd
using
Serilog
;
using
System
;
using
System.Collections.Generic
;
using
System.Text
;
using
System.Threading.Tasks
;
using
WebApiClient.Attributes
;
using
WebApiClient.Contexts
;
namespace
Bailun.ServiceFabric.Trace.Attributes
{
public
class
TraceInterceptAttribute
:
TraceFilterBaseAttribute
{
const
string
DefaultMessageTemplate
=
"HTTP {RequestMethod} {RequestPath} responded {StatusCode}{NewLine}"
+
"[REQUEST] {$RequestTime}{NewLine}"
+
"{$RequestHeaders}{NewLine}"
+
"{$RequestContent}{NewLine}"
+
"[RESPONSE] {$ResponseTime}{NewLine}"
+
"{$ResponseHeaders}{NewLine}"
+
"{$ResponseContent}"
;
const
string
RequestMessageTemplate
=
"HTTP {RequestMethod} {RequestPath} responded 400 {NewLine}"
+
"[REQUEST] {RequestTime}{NewLine}"
+
"{RequestHeaders}{NewLine}"
+
"{RequestContent}"
;
const
string
timeFormat
=
"yyyy-MM-dd HH:mm:ss.fff"
;
public
TraceInterceptAttribute
()
{
}
public
TraceInterceptAttribute
(
string
module
)
{
this
.
Module
=
module
;
}
public
string
Module
{
get
;
set
;
}
protected
override
Task
LogTraceMessageAsync
(
ApiActionContext
context
,
TraceMessage
traceMessage
)
{
var
method
=
context
.
ApiActionDescriptor
.
Member
;
var
actionName
=
$"
{
method
.
DeclaringType
.
Name
}
.
{
method
.
Name
}
"
;
var
module
=
string
.
IsNullOrWhiteSpace
(
this
.
Module
)
?
actionName
:
this
.
Module
;
Serilog
.
Log
.
Logger
.
SetModule
(
module
);
var
RequestTime
=
traceMessage
.
RequestTime
.
ToString
(
timeFormat
);
var
ResponseTime
=
traceMessage
.
ResponseTime
.
ToString
(
timeFormat
);
if
(
traceMessage
.
Exception
==
null
)
{
if
(
traceMessage
.
HasResponse
)
{
if
(
traceMessage
.
HasRequest
)
{
Serilog
.
Log
.
Logger
.
Information
(
DefaultMessageTemplate
,
context
.
RequestMessage
.
Method
,
context
.
RequestMessage
.
RequestUri
.
PathAndQuery
,
context
.
ResponseMessage
.
StatusCode
,
System
.
Environment
.
NewLine
,
traceMessage
.
RequestTime
.
ToString
(
timeFormat
),
System
.
Environment
.
NewLine
,
traceMessage
.
RequestHeaders
,
System
.
Environment
.
NewLine
,
traceMessage
.
RequestContent
,
System
.
Environment
.
NewLine
,
traceMessage
.
ResponseTime
.
ToString
(
timeFormat
),
System
.
Environment
.
NewLine
,
traceMessage
.
ResponseHeaders
,
System
.
Environment
.
NewLine
,
traceMessage
.
ResponseContent
);
}
}
else
if
(
traceMessage
.
HasRequest
)
{
Serilog
.
Log
.
Logger
.
Information
(
RequestMessageTemplate
,
context
.
RequestMessage
.
Method
,
context
.
RequestMessage
.
RequestUri
.
PathAndQuery
,
context
.
ResponseMessage
.
StatusCode
,
System
.
Environment
.
NewLine
,
traceMessage
.
RequestTime
.
ToString
(
timeFormat
),
System
.
Environment
.
NewLine
,
traceMessage
.
RequestHeaders
,
System
.
Environment
.
NewLine
,
traceMessage
.
RequestContent
);
}
}
else
{
if
(
traceMessage
.
HasResponse
)
{
if
(
traceMessage
.
HasRequest
)
{
Serilog
.
Log
.
Logger
.
Error
(
traceMessage
.
Exception
,
DefaultMessageTemplate
,
context
.
RequestMessage
.
Method
,
context
.
RequestMessage
.
RequestUri
.
PathAndQuery
,
context
.
ResponseMessage
.
StatusCode
,
System
.
Environment
.
NewLine
,
traceMessage
.
RequestTime
.
ToString
(
timeFormat
),
System
.
Environment
.
NewLine
,
traceMessage
.
RequestHeaders
,
System
.
Environment
.
NewLine
,
traceMessage
.
RequestContent
,
System
.
Environment
.
NewLine
,
traceMessage
.
ResponseTime
.
ToString
(
timeFormat
),
System
.
Environment
.
NewLine
,
traceMessage
.
ResponseHeaders
,
System
.
Environment
.
NewLine
,
traceMessage
.
ResponseContent
);
}
}
else
if
(
traceMessage
.
HasRequest
)
{
Serilog
.
Log
.
Logger
.
Error
(
traceMessage
.
Exception
,
RequestMessageTemplate
,
context
.
RequestMessage
.
Method
,
context
.
RequestMessage
.
RequestUri
.
PathAndQuery
,
System
.
Environment
.
NewLine
,
traceMessage
.
RequestTime
.
ToString
(
timeFormat
),
System
.
Environment
.
NewLine
,
traceMessage
.
RequestHeaders
,
System
.
Environment
.
NewLine
,
traceMessage
.
RequestContent
);
}
}
return
Task
.
CompletedTask
;
}
}
}
src/Bailun.ServiceFabric.Trace/Bailun.ServiceFabric.Trace.csproj
View file @
a4c1716d
...
...
@@ -18,7 +18,6 @@
<PackageReference Include="SkyAPM.Agent.AspNetCore" Version="0.9.0" />
<PackageReference Include="SkyAPM.Agent.GeneralHost" Version="0.9.0" />
<!--<PackageReference Include="SkyAPM.Utilities.DependencyInjection" Version="0.9.0" />-->
<PackageReference Include="WebApiClient.JIT" Version="1.1.3" />
</ItemGroup>
</Project>
src/Bailun.ServiceFabric.Trace/Extensions/Host/GenericHostBuilderExtensions.cs
View file @
a4c1716d
...
...
@@ -22,6 +22,24 @@ namespace Microsoft.Extensions.Hosting
/// <returns></returns>
public
static
IHostBuilder
UseBailunTrace
(
this
IHostBuilder
builder
,
bool
writeToExceptionless
=
false
,
bool
writeToConsole
=
false
,
Action
<
LoggerConfiguration
>
configureLogger
=
null
)
{
return
builder
.
UseBailunSerilog
(
writeToExceptionless
,
writeToConsole
,
configureLogger
)
.
AddSkyAPM
()
.
ConfigureServices
((
hostCtx
,
services
)
=>
{
services
.
Replace
(
ServiceDescriptor
.
Singleton
<
ITracingDiagnosticProcessor
,
HttpClientTracingDiagnosticProcessor
>());
});
}
/// <summary>
/// 日志配置
/// </summary>
/// <param name="builder"></param>
/// <param name="writeToExceptionless">是否写到Exceptionless</param>
/// <param name="writeToConsole">是否写到控制台</param>
/// <param name="configureLogger">扩展配置</param>
/// <returns></returns>
public
static
IHostBuilder
UseBailunSerilog
(
this
IHostBuilder
builder
,
bool
writeToExceptionless
=
false
,
bool
writeToConsole
=
false
,
Action
<
LoggerConfiguration
>
configureLogger
=
null
)
{
Action
<
HostBuilderContext
,
LoggerConfiguration
>
configure
=
(
hostingContext
,
loggerConfiguration
)
=>
{
...
...
@@ -49,14 +67,10 @@ namespace Microsoft.Extensions.Hosting
.
WriteTo
.
Console
(
outputTemplate
:
"[{Timestamp:HH:mm:ss} {Level:u3}] {TraceId:l} {Message:lj} {NewLine}{Exception}"
);
}
configureLogger
?.
Invoke
(
loggerConfiguration
);
};
return
builder
.
UseSerilog
(
configure
)
.
AddSkyAPM
()
.
ConfigureServices
((
hostCtx
,
services
)
=>
{
services
.
Replace
(
ServiceDescriptor
.
Singleton
<
ITracingDiagnosticProcessor
,
HttpClientTracingDiagnosticProcessor
>());
});
return
builder
.
UseSerilog
(
configure
);
}
}
}
src/Bailun.ServiceFabric.Trace/Extensions/Host/WebHostBuilderExtensions.cs
View file @
a4c1716d
...
...
@@ -21,6 +21,24 @@ namespace Microsoft.AspNetCore.Hosting
/// <returns></returns>
public
static
IWebHostBuilder
UseBailunTrace
(
this
IWebHostBuilder
builder
,
bool
writeToExceptionless
=
false
,
bool
writeToConsole
=
false
,
Action
<
LoggerConfiguration
>
configureLogger
=
null
)
{
return
builder
.
UseBailunSerilog
(
writeToExceptionless
,
writeToConsole
,
configureLogger
)
.
ConfigureServices
(
services
=>
{
services
.
AddSingleton
<
ITracingDiagnosticProcessor
,
HostingTracingDiagnosticProcessor
>();
services
.
AddSingleton
<
ITracingDiagnosticProcessor
,
HttpClientTracingDiagnosticProcessor
>();
});
}
/// <summary>
/// 日志配置
/// </summary>
/// <param name="builder"></param>
/// <param name="writeToExceptionless">是否写到Exceptionless</param>
/// <param name="writeToConsole">是否写到控制台</param>
/// <param name="configureLogger">扩展配置</param>
/// <returns></returns>
public
static
IWebHostBuilder
UseBailunSerilog
(
this
IWebHostBuilder
builder
,
bool
writeToExceptionless
=
false
,
bool
writeToConsole
=
false
,
Action
<
LoggerConfiguration
>
configureLogger
=
null
)
{
Action
<
WebHostBuilderContext
,
LoggerConfiguration
>
configure
=
(
hostingContext
,
loggerConfiguration
)
=>
{
...
...
@@ -48,13 +66,10 @@ namespace Microsoft.AspNetCore.Hosting
.
WriteTo
.
Console
(
outputTemplate
:
"[{Timestamp:HH:mm:ss} {Level:u3}] {TraceId:l} {Message:lj} {NewLine}{Exception}"
);
}
configureLogger
?.
Invoke
(
loggerConfiguration
);
};
return
builder
.
UseSerilog
(
configure
)
.
ConfigureServices
(
services
=>
{
services
.
AddSingleton
<
ITracingDiagnosticProcessor
,
HostingTracingDiagnosticProcessor
>();
services
.
AddSingleton
<
ITracingDiagnosticProcessor
,
HttpClientTracingDiagnosticProcessor
>();
});
return
builder
.
UseSerilog
(
configure
);
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment