使用NLog进行日志记录的最佳或最有用的配置是什么?(只要它们有用,它们可以是简单的也可以是复杂的.)
我正在考虑一些示例,例如自动滚动特定大小的日志文件,更改布局(日志消息)是否存在异常,一旦发生错误就升级日志级别等.
以下是一些链接:
在python中,我可以从五项列表中切割最后四项(从中拉取值),如下所示:( mylist[1:]注意,基于0的索引).在R中,似乎在冒号之后没有东西是错误的.在这两种语言中,我可以将最后一个参数作为列表的长度,但这并不总是方便的(例如内联切片:) colnames(iris)[2:length(colnames(iris))].
R中有没有这样的语法?
我知道有一些解决方案用于实现INotifyPropertyChanged,但它们都不是那么简单:引用这个库,创建/添加这个属性,完成(我在想这里是面向方面的编程).有谁知道一个非常简单的方法来做到这一点?如果解决方案是免费的,奖励积分.
以下是一些相关链接(其中没有一个提供足够简单的答案):
我正在连接USB-to-serial端口,可以随时插入或移除.我发现我可以使用WMI(特别是使用WMI Code Creator)来查询PC中的设备更改.
在下面生成的代码段中,订阅了Win32_DeviceChangeEvent.但是,此事件不会显示导致事件的设备(例如USB,串行端口等).有没有办法只在插入或删除串行端口时接收通知?
为了澄清,代码的重点不是检测串口的打开/关闭,而是检测是否已将新端口添加到计算机或删除了以前的端口.
using System;
using System.Management;
using System.Windows.Forms;
namespace WMISample
{
public class WMIReceiveEvent
{
public WMIReceiveEvent()
{
try
{
WqlEventQuery query = new WqlEventQuery(
"SELECT * FROM Win32_DeviceChangeEvent");
ManagementEventWatcher watcher = new ManagementEventWatcher(query);
Console.WriteLine("Waiting for an event...");
watcher.EventArrived +=
new EventArrivedEventHandler(
HandleEvent);
// Start listening for events
watcher.Start();
// Do something while waiting for events
System.Threading.Thread.Sleep(10000);
// Stop …Run Code Online (Sandbox Code Playgroud) 我应该如何收集异常并将它们放入AggregateException以重新抛出?
对于我的特定代码,我有一个循环,并且将从代码的一部分抛出零个或多个异常.我希望在AggregateException出现时添加新的异常,但是文档类型表明它应该一次构造所有异常(没有方法向对象添加异常).
那么每次创建一个新的AE并且只包括异常列表中的前一个AE呢?似乎是一种很好的方式来做到这一点.
有更好的想法吗?
有很多建议用于处理批处理文件中的返回代码(使用ERROLEVEL机制),例如
有些建议是做if errorlevel 1 goto somethingbad,而其他人建议使用
%ERRORLEVEL%变量和使用==,EQU,LSS等有似乎内的问题IF陈述和这样的,所以后来delayedexpansion鼓励,但它似乎来与自己的怪癖.
什么是万无一失(即健壮,所以它几乎可以在任何具有几乎任何返回码的系统上工作)的方式来知道是否返回了一个坏的(非零)代码?
对于基本用法,以下似乎可以正常捕获任何非零返回代码:
if not errorlevel 0 (
echo error level was nonzero
)
Run Code Online (Sandbox Code Playgroud) 我们有两个脑袋.一个是我们的主要开发负责人,另一个是我忘记了直到今天.我们发现了一个错误并将其修复到我们的主要开发分支中,我刚刚意识到它应该在旧分支中修复.
我认为最好在旧分支上进行更改并将其与最新分支合并,但我们并没有这样做.mercurial可以处理这个吗?我们还没有尝试过这样的事情,我无法真正理解它将如何完成.
有一个深刻的问题是从字节数组中读取C#中的C/C++数据结构,但我无法使代码适用于我的big-endian(网络字节顺序)字节集合.(编辑:请注意,我的真实结构不仅仅包含一个字段.)是否有办法将字节编组为结构的big-endian版本,然后提取框架的字节顺序(主机的字节顺序)中的值,通常是小端)?
(请注意,倒车字节数组将无法正常工作-每个值的字节必须扭转,不给你相同的集合倒车所有字节).
这应该总结我正在寻找的东西(LE = LittleEndian,BE = BigEndian):
void Main()
{
var leBytes = new byte[] {1, 0, 2, 0};
var beBytes = new byte[] {0, 1, 0, 2};
Foo fooLe = ByteArrayToStructure<Foo>(leBytes);
Foo fooBe = ByteArrayToStructureBigEndian<Foo>(beBytes);
Assert.AreEqual(fooLe, fooBe);
}
[StructLayout(LayoutKind.Explicit, Size=4)]
public struct Foo {
[FieldOffset(0)]
public ushort firstUshort;
[FieldOffset(2)]
public ushort secondUshort;
}
T ByteArrayToStructure<T>(byte[] bytes) where T: struct
{
GCHandle handle = GCHandle.Alloc(bytes, GCHandleType.Pinned);
T stuff = (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(),typeof(T));
handle.Free();
return stuff;
}
T ByteArrayToStructureBigEndian<T>(byte[] …Run Code Online (Sandbox Code Playgroud) 我想为我的应用程序保留一个自定义配置文件,JSON似乎是一个合适的格式*.
我知道有.NET的JSON库,但我找不到它们的良好比较评论.此外,我的应用程序需要在单声道上运行,因此更难找出要使用的库.
这是我发现的:
我记得有一种内置的方法来(de)序列化JSON,但我不记得它是什么.
什么库最容易在linux上使用单声道?速度并不重要,因为数据很小.
*由于应用程序在无头linux机器上运行,我需要使用命令行,并希望将打字输入降至最低,因此我排除了XML.此外,我找不到任何与INF文件一起使用的库,我不熟悉标准的linux配置文件格式,而JSON功能强大.
有关从单独的配置文件中读取设置的问题以及与其类似的其他配置文件,但我的问题是特定于应用程序属性设置(即<MyApplication.Properties.Settings>- 请参阅下面的XML文件)以及如何动态加载它们.我在这篇文章中尝试了这个方法,其中包括刷新主配置文件的整个appSettings部分,但我的改编引发了异常,因为我没有替换appSettings部分:
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
// Have tried the other ConfigurationUserLevels to no avail
config.AppSettings.File = myRuntimeConfigFilePath;
config.Save(ConfigurationSaveMode.Modified); // throws ConfigurationErrorsException
ConfigurationManager.RefreshSection("userSettings");
Run Code Online (Sandbox Code Playgroud)
ConfigurationErrorsException.Message是"根元素必须与引用文件的部分的名称匹配'appSettings'(C:\ myFile.xml第2行)." 该文件是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<userSettings>
<MyApplication.Properties.Settings>
<setting name="SineWaveFrequency" serializeAs="String">
<value>6</value>
</setting>
<setting name="SineWaveAmplitude" serializeAs="String">
<value>6</value>
</setting>
</MyApplication.Properties.Settings>
</userSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
有没有办法将此文件中的值导入到MyApplication.Properties.Settings.Default类中,框架处理所有XML反序列化,就像在应用程序启动时加载配置文件一样?
.net ×7
mono ×3
aop ×1
batch-file ×1
branch ×1
c# ×1
cherry-pick ×1
endianness ×1
exception ×1
interop ×1
json ×1
legacy ×1
linux ×1
logging ×1
mercurial ×1
nlog ×1
persistence ×1
r ×1
serial-port ×1
settings ×1
windows ×1
wmi ×1