77 lines
2.9 KiB
C#
77 lines
2.9 KiB
C#
using System;
|
||
using System.ComponentModel;
|
||
using System.IO;
|
||
using System.Net.Http;
|
||
using System.Net.Http.Headers;
|
||
using System.Windows;
|
||
using System.Windows.Controls;
|
||
using Microsoft.Extensions.DependencyInjection;
|
||
using Microsoft.Extensions.Hosting;
|
||
using Microsoft.Extensions.Logging;
|
||
using System.Text.Json;
|
||
using System.Threading;
|
||
using log4net;
|
||
using log4net.Appender;
|
||
using log4net.Config;
|
||
using log4net.Layout;
|
||
using ModelContextProtocol.Server;
|
||
|
||
namespace LinkToolAddin.ui.dockpane
|
||
{
|
||
/// <summary>
|
||
/// Interaction logic for DialogDockpaneView.xaml
|
||
/// </summary>
|
||
public partial class DialogDockpaneView : UserControl
|
||
{
|
||
private static ILog log = LogManager.GetLogger(typeof(DialogDockpaneView));
|
||
|
||
public DialogDockpaneView()
|
||
{
|
||
InitLogger();
|
||
InitializeComponent();
|
||
}
|
||
|
||
private async void TestServer_OnClick(object sender, RoutedEventArgs e)
|
||
{
|
||
log.Info("TestServer Clicked");
|
||
string jsonRpcString = @"{""jsonrpc"":""2.0"",""method"":""CallArcGISPro.CallArcGISProTool"",""params"":{""toolName"":""Testbbb"",""toolParams"":""[\""aa\"",\""bbb\""]""},""id"":1}";
|
||
LinkToolAddin.host.CallMcp.CallInnerMcpTool(jsonRpcString);
|
||
}
|
||
|
||
protected void InitLogger()
|
||
{
|
||
// 1. 创建控制台输出器(Appender)
|
||
var consoleAppender = new ConsoleAppender
|
||
{
|
||
Layout = new PatternLayout("%date [%thread] %-5level %logger - %message%newline"),
|
||
Threshold = log4net.Core.Level.Info // 仅输出 Info 及以上级别
|
||
};
|
||
consoleAppender.ActivateOptions(); // 激活配置
|
||
|
||
// 2. 创建文件滚动输出器(按大小滚动)
|
||
var fileAppender = new RollingFileAppender
|
||
{
|
||
File = Path.Combine("Logs", "app.log"), // 日志文件路径
|
||
AppendToFile = true, // 追加模式
|
||
RollingStyle = RollingFileAppender.RollingMode.Size, // 按文件大小滚动
|
||
MaxSizeRollBackups = 10, // 保留 10 个历史文件
|
||
MaximumFileSize = "1MB", // 单个文件最大 1MB
|
||
StaticLogFileName = true, // 固定文件名(否则自动追加序号)
|
||
Layout = new PatternLayout("%date [%thread] %-5level %logger - %message%newline"),
|
||
Threshold = log4net.Core.Level.Info // 仅输出 Info 及以上级别
|
||
};
|
||
fileAppender.ActivateOptions(); // 激活配置
|
||
|
||
// 3. 直接通过 BasicConfigurator 注册 Appender
|
||
BasicConfigurator.Configure(consoleAppender, fileAppender);
|
||
|
||
log = LogManager.GetLogger(typeof(DialogDockpaneView));
|
||
|
||
// 测试日志输出
|
||
log.Debug("Debug 日志(控制台可见)");
|
||
log.Info("Info 日志(控制台和文件可见)");
|
||
log.Error("Error 日志(严重问题)");
|
||
}
|
||
}
|
||
}
|