我在服务器端使用控制台,文件和Graylog接收器为所有.NETCore服务使用Serilog。我还喜欢在Windows胖客户端(WPF应用程序)中使用它。
对于后者,我有一个问题,因为我看不到,如何在用户成功登录后添加另一个文件接收器。我需要将应用程序日志存储在全局AppData (Environment.SpecialFolder.CommonApplicationData)文件夹中,并将另一个用户日志存储在用户子文件夹中,例如:
var appName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name;
AppDataDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), appName);
Directory.CreateDirectory(AppDataDir);
AppLogDir = Path.Combine(AppDataDir, $@"Logs");
Directory.CreateDirectory(AppLogDir);
Log.Logger = new LoggerConfiguration()
.ReadFrom.AppSettings()
.Enrich.WithExceptionDetails()
.Enrich.FromLogContext()
.Enrich.WithProcessName()
.Enrich.WithThreadId()
.Enrich.WithAssemblyName()
.WriteTo.Console(outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] [{SourceContext}] " +
"ThreadId: [{ThreadId}] {Message:lj}{NewLine}{Exception}")
.WriteTo.File(Path.Combine(AppLogDir, $"{appName}-.log"), rollOnFileSizeLimit: true,
fileSizeLimitBytes: 1048576, retainedFileCountLimit: 30,
outputTemplate: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] [{SourceContext}] " +
"[ThreadId: {ThreadId}] {Message:lj}{NewLine}{Exception}")
.CreateLogger();
Run Code Online (Sandbox Code Playgroud)
然后,LoginViewModel在成功登录后以及配置了初始应用程序记录器很长时间之后,我就知道了用户名,并可以为该用户创建一个文件夹并将日志文件放在此处:
var userLogDir = Path.Combine(AppDataDir, userName); …Run Code Online (Sandbox Code Playgroud) 我有一个这样的模型:
\nimport 'package:uuid/uuid.dart';\nimport 'package:hive/hive.dart';\n\npart 'config_item.g.dart';\n\n@HiveType()\nclass ConfigItem {\n @HiveField(0)\n String _id; // this can be a uuid or a MongoDB ObjectID\n @HiveField(1)\n final String deviceName;\n....\n}\nRun Code Online (Sandbox Code Playgroud)\n我喜欢生成适配器文件,但它不想这样做!当我打电话时flutter packages pub run build_runner build --delete-conflicting-outputs我得到以下输出:
flutter packages pub run build_runner build --delete-conflicting-outputs main \xe2\x9c\xad \xe2\x9c\x88\n[INFO] Generating build script...\n[INFO] Generating build script completed, took 399ms\n\n[SEVERE] Nothing can be built, yet a build was requested.\n[INFO] Initializing inputs\n[INFO] Reading cached asset graph...\n[INFO] Reading cached asset graph completed, took 45ms\n\n[INFO] Checking …Run Code Online (Sandbox Code Playgroud) 我需要为监控 RabbitMQ 服务器的软件分配哪些权限?软件代理应该监控本文档中解释和推荐的大部分指标。
我想我必须创建一个用户,例如monitoring,然后授予该用户访问所有virtual hosts包含应监视资源的权限。
我认为在创建用户时我必须为其分配预定义标签的标签。monitoring
我不明白的是,我需要将什么正则表达式分配给configure,write和read。该文档包含一个具有资源权限的表。
我认为监控软件不应该能够创建或删除资源(configure权限),也不应该能够将消息添加到队列或从队列中读取和确认消息。但例如,它应该能够读取队列中等待的消息数量,以便在队列中有大量未检索到的不断增长的消息时发出警报。
有人可以解释一下,这样的监控用户需要什么权限和设置吗?
我使用 CentOS 7 和 JetBrains Rider IDE 编写 .NETCore 服务器。
我需要为 .NETCore 2.0 创建一堆强命名程序集(库项目)。我知道在 Windows 上我可以使用该sn.exe工具来创建snk密钥文件。任何人都可以详细说明如何在 CentOS 机器上执行此操作吗?
我发现了一个单二进制文件也称为sn(参见手册页),它似乎是sn.exe等效的,但它似乎很旧(2003 / 2004),我不确定它是否是今天应该使用的工具。
另外,我需要与官方(来自商业供应商)签署一些 DLL 。我不明白文件和我获得的证书之间的关系(它有扩展名)。code signing certificatesnkp12
通过一点研究,我了解到,在我的.csproj文件中,我需要将以下标签添加到建议中MSBUILD以创建强命名程序集:
<AssemblyOriginatorKeyFile>MyKey.snk</AssemblyOriginatorKeyFile>
<SignAssembly>True</SignAssembly>
Run Code Online (Sandbox Code Playgroud)
如果有人能解释如何(在针对 .NetCore 2.0 的 CentOS 7上),我将不胜感激:
创建强命名程序集
使用现有商业证书签署装配
请注意,我没有使用 VisualStudio(其中有 UI 工具)!
我正在使用 MVVM 模式编写 WPF 应用程序。我必须说,我(尚)不熟悉 .NET 异步编程模型(刚刚学习),但多年来一直在用 C/C++ 和 Java 编写多线程应用程序。
这个想法是在与 UI 线程不同的线程中启动长时间运行的查询,这样我就有机会在操作运行时显示微调器或进度条。
我的大多数内部服务方法返回集合或其他复杂类型,如 DTO 等。结果通常绑定到用户控件,如 GridViews、ListViews 等。我总是收到编译器错误,说我的返回类型不包含“GetAwaiter”的定义。所以我一定做错了什么。
下面是我的ViewModel中此类方法的示例,该方法调用执行数据库查询并返回 ObservableCollection 的服务。
private async void GetInvoices()
{
IsOperationRunning = true; //Binding for a RadBusyIndicator
Invoices = await _uiContractService.GetInvoices(SelectedInvoiceState, SelectedSupplierItem.Id, SelectedInvoiceDateFilter, FilterStartDate, FilterEndDate);
IsOperationRunning = false;
RaisePropertyChanged(() => Invoices);
if (Invoices.Count == 0)
SendUserInfoMsg($"NO invoices matched your search criteria.", UiUserNotificationMessageType.Warning);
}
Run Code Online (Sandbox Code Playgroud)
这种情况下的编译器错误是:
ObservableCollection<InvoiceDto>' does not contain a definition for 'GetAwaiter' and no extension method 'GetAwaiter' accepting a first argument of …
我正在使用Visual Studio 2015在C#中编写PowerShell Cmdlet.调试它工作正常,但在关闭PowerShell窗口之前我无法重建DLL.DLL似乎正在使用中,因此无法删除(不在命令行上,也不能使用资源管理器).我试过删除模块.这成功删除了我的Cmdlet,但我仍然无法删除/覆盖它.
关闭PowerShell,重建DLL然后重新打开新的PowerShell,cd到DLL路径(通常是深度嵌套),再次重新导入它,启动命令调试等等,这对于每个调试会话都是非常不方便的. ..
卸载DLL有没有更好的解决方案?
c# ×2
.net-core ×1
async-await ×1
flutter ×1
flutter-hive ×1
monitoring ×1
powershell ×1
rabbitmq ×1
rider ×1
serilog ×1
wpf ×1