小编Tho*_*myB的帖子

稍后在运行时创建serilog文件接收器-如何?

我在服务器端使用控制台,文件和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)

serilog

7
推荐指数
1
解决办法
394
查看次数

Flutter hive:无法生成适配器文件

我有一个这样的模型:

\n
import '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}\n
Run Code Online (Sandbox Code Playgroud)\n

我喜欢生成适配器文件,但它不想这样做!当我打电话时flutter packages pub run build_runner build --delete-conflicting-outputs我得到以下输出:

\n
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)

flutter flutter-hive

7
推荐指数
2
解决办法
1万
查看次数

需要为RabbitMQ监控用户分配的权限

我需要为监控 RabbitMQ 服务器的软件分配哪些权限?软件代理应该监控本文档中解释和推荐的大部分指标。

我想我必须创建一个用户,例如monitoring,然后授予该用户访问所有virtual hosts包含应监视资源的权限。

我认为在创建用户时我必须为其分配预定义标签的标签。monitoring

我不明白的是,我需要将什么正则表达式分配给configure,writeread。该文档包含一个具有资源权限的表。

我认为监控软件不应该能够创建或删除资源configure权限),也不应该能够将消息添加到队列或从队列中读取和确认消息。但例如,它应该能够读取队列中等待的消息数量,以便在队列中有大量未检索到的不断增长的消息时发出警报。

有人可以解释一下,这样的监控用户需要什么权限和设置吗?

monitoring rabbitmq

6
推荐指数
1
解决办法
9318
查看次数

如何在 Linux 中为强命名程序集创建 .NETCore 的 snk

我使用 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上),我将不胜感激:

  1. 创建强命名程序集

  2. 使用现有商业证书签署装配

请注意,我没有使用 VisualStudio(其中有 UI 工具)!

.net-core rider

5
推荐指数
1
解决办法
1792
查看次数

如何将 async/await 与返回 ObservableCollection&lt;T&gt; 的方法结合使用

我正在使用 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 …

c# wpf async-await

3
推荐指数
1
解决办法
4387
查看次数

调试/卸载PowerShell Cmdlet

我正在使用Visual Studio 2015在C#中编写PowerShell Cmdlet.调试它工作正常,但在关闭PowerShell窗口之前我无法重建DLL.DLL似乎正在使用中,因此无法删除(不在命令行上,也不能使用资源管理器).我试过删除模块.这成功删除了我的Cmdlet,但我仍然无法删除/覆盖它.

关闭PowerShell,重建DLL然后重新打开新的PowerShell,cd到DLL路径(通常是深度嵌套),再次重新导入它,启动命令调试等等,这对于每个调试会话都是非常不方便的. ..

卸载DLL有没有更好的解决方案?

c# powershell visual-studio

2
推荐指数
1
解决办法
1202
查看次数