对NMock与VS 2011 Fakes Framework等Mock框架的差异感到有些困惑.通过MSDN,我理解的是Fakes允许你像RhinoMock或NMock一样模拟你的依赖,但是方法不同,Fakes生成代码来实现这个功能,但Mocks框架没有.那么我的理解是正确的吗?假货只是另一个模拟框架
我正在寻找有关如何将Log4net日志记录到Syslog服务器的示例配置.欢迎任何帮助.
我写了以下内容来测试使用foreachvs 的性能LINQ:
private class Widget
{
public string Name { get; set; }
}
static void Main(string[] args)
{
List<Widget> widgets = new List<Widget>();
int found = 0;
for (int i = 0; i <= 500000 - 1; i++)
widgets.Add(new Widget() { Name = Guid.NewGuid().ToString() });
DateTime starttime = DateTime.Now;
foreach (Widget w in widgets)
{
if (w.Name.StartsWith("4"))
found += 1;
}
Console.WriteLine(found + " - " + DateTime.Now.Subtract(starttime).Milliseconds + " ms");
starttime = DateTime.Now;
found …Run Code Online (Sandbox Code Playgroud) 我正在努力在log4net中编写一个AND条件过滤器.如果它是nLog,我可以这样写:
<logger name="*" minlevel="Info" xsi:type="NLogLoggerRule" writeTo="FooLogger" >
<filters>
<when condition="equals('${event-context:item=UserID}', 'TESTUSER')
and equals('${event-context:item=URL}','/foo/foobar.aspx')"
action="Ignore" />
</filters>
</logger>
Run Code Online (Sandbox Code Playgroud)
我不知道如何在log4net中编写相同的过滤器.在写一个条件时,我迄今为止取得了成功:
<appender>
....
<filter type="log4net.Filter.PropertyFilter">
<key value="URL" />
<stringToMatch value="/foo/foobar.aspx" />
<acceptOnMatch value="false" />
</filter>
</appender>
Run Code Online (Sandbox Code Playgroud)
如何使用log4net过滤器编写AND条件?请帮忙.
向其添加密钥的标准结构是什么appsettings.json?另外,如何读取我们的那些值run.csx?通常在app.config中,我们ConfigurationManager.GetSettings["SettingName"];
在Azure Function中是否有任何类似的实现?
我[DataMember(IsRequired=true)]用来制作所需的DataContract属性.对于OperationContract参数似乎没有一些IsRequired.如何使它们成为必需而不允许null?
在SoapUI工具中,OperationContract中的参数似乎是可选的.虽然这绝不是可选的或null.
WCF接口:
[OperationContract]
IsClientUpdateRequiredResult IsClientUpdateRequired(IsClientUpdateRequiredInput versie);
...
[DataContract]
public class IsClientUpdateRequiredInput
{
[DataMember(IsRequired=true)]
public string clientName { get; set; }
[DataMember(IsRequired = true, Order = 0)]
public int major { get; set; }
[DataMember(IsRequired = true, Order = 1)]
public int minor { get; set; }
[DataMember(IsRequired = true, Order = 2)]
public int build { get; set; }
[DataMember(IsRequired = true, Order = 3)]
public int revision { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
soapUI请求模板:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:tem="http://tempuri.org/" …Run Code Online (Sandbox Code Playgroud) 我希望我的日志文件类似于date.filename.txt.每天推出新文件.
我能够以这种格式生成文件filename.date.txt.通过使用以下配置
<appender name="SLSILogFileAppender" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" >
<converter>
<name value="logfilename" />
<type
value="FilenamePatternConverter" />
</converter>
<conversionPattern
value="%property{TestURL}%logfilename{LocalApplicationData}" />
</file>
<appendToFile value="true" />
<rollingStyle value="Date" />
<staticLogFileName value="false" />
<datePattern value="'.'yyyy.MM.dd'.log'" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
</appender>
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,但没有任何帮助.
我在非MVC环境中使用Razor Engine(razorengine.codeplex.com).我编译存储在文件中的模板,@inherits用于智能感知支持.
View<>和设置View<>为基类所有cshtml文件都有以下@inherits指令:
@inherits View<SomeModel>
Run Code Online (Sandbox Code Playgroud)
抛出错误:
找不到命名空间View的类型,是否缺少程序集引用?
我的web.config包含以下条目:
<add namespace="CustomAssembly.NamespaceContainingViewClass" />
Run Code Online (Sandbox Code Playgroud)
我认为这与其他条目有关<assemblies>,我CustomAssembly没有提到.是这样的吗?我可以使用另一个程序集中包含的自定义基类进行编译吗?
ps我无法检索程序集的强名称,因为我的自定义程序集引用了一个没有强名称的3d方程序集...
堆栈跟踪:
at RazorEngine.Compilation.DirectCompilerServiceBase.CompileType(TypeContext context)
at RazorEngine.Templating.TemplateService.CreateTemplate(String template, Type modelType)
at RazorEngine.Templating.TemplateService.GetTemplate(String template, Type modelType, String name)
at RazorEngine.Templating.TemplateService.Compile(String template, Type modelType, String name)
at RazorEngine.Razor.Compile(String template, Type modelType, String name)
Run Code Online (Sandbox Code Playgroud) 使用ConvertFrom-Json编写powershell脚本时,似乎在将数组中的值转换为字符串时,会使用其他空格转换数组中的值.以下代码在一个小代码示例中显示:
$object = @"
{
"object":
{
"prop1": "value",
"array":[
{ "key": "value"},
{ "key2": "valuevalue"},
{ "key3": "valuevalue"},
{ "key4": "valuevalue"},
{ "key5": "valuevalue"}
]
}
}
"@ | ConvertFrom-Json
$object.object.prop1
$object.object.array.key
$t = $object.object.prop1
$t2= $object.object.array.key
"""$t"""
"""$t2"""
Run Code Online (Sandbox Code Playgroud)
输出:
value
value
"value"
"value "
Run Code Online (Sandbox Code Playgroud)
最后一个值来自哪个额外空格?向数组添加更多值对时,会添加更多空格.
我们有一个内部开发的日志系统,我们希望获得log4net的好处,例如能够同时使用多个appender.我们决定将旧的日志记录系统转移到自定义的log4net appender中.当遗留系统配置正确时,这很有效,但遗留记录器实际上写入了WCF客户端(使得详细日志记录变慢,我们想要使用其他log4net appender的原因),最近WCF配置不是很好本来应该.当发生这种情况时,应用程序似乎运行正常,但显然遗留系统的自定义appender无法正常工作.其他appender工作正常,但自定义旧版appender没有输出,也没有错误消息表明存在问题.
处理"递归"日志记录的正确方法是什么,即从自定义log4net appender内部进行日志记录?我尝试了一个天真的解决方案:从静态对象抓取log4net并在appender中记录:
public class MyCustomAppender : AppenderSkeleton
{
protected override void Append(log4net.Core.LoggingEvent loggingEvent)
{
try
{
// something which throws here...
}
catch (Exception ex)
{
log4net.LogManager.GetLogger(this.GetType()).Error(this.GetType().ToString() + ": error during append", ex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个严重的失败,"System.Threading.LockRecursionException:在这种模式下不允许递归读取锁定." 很公平; 这是天真的解决方案.
我也尝试过:
this.ErrorHandler.Error(this.GetType().ToString() + ": error during append", ex);
Run Code Online (Sandbox Code Playgroud)
在异常处理程序中,因为它似乎可能是正确的.什么都不明显.
有没有办法在appender中通过log4net记录错误?或者我是否必须直接执行类似硬编码写入Windows事件日志的操作?显然存在无限递归下降的巨大危险,但我认为会有一些方法让操作员知道其中一个appender无法运行.
JR
log4net ×4
.net ×2
appsettings ×1
arrays ×1
asp.net ×1
azure ×1
c# ×1
config ×1
datamember ×1
foreach ×1
json ×1
linq ×1
logging ×1
performance ×1
powershell ×1
razor ×1
razorengine ×1
soapui ×1
syslog ×1
unit-testing ×1
wcf ×1