我在C#项目中使用log4net,在生产环境中,我想禁用所有日志记录,但是当发生一些致命错误时,它应该将所有以前的512条消息记录到文件中.我已经成功配置了这个,它是工作正常.当发生致命错误时,它会将消息记录到文件中.
但是当我从Visual Studio运行它时,我可以看到所有日志消息都写入Output窗口,无论它是否是致命的.(当我从Windows资源管理器运行时,我无法看到这些消息 - 我的应用程序是一个WinForm exe,并且没有控制台窗口可以看到输出)
有没有办法禁用此日志记录?我只需要在文件中记录我的日志,当发生一些致命错误时也是如此.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<log4net debug="false">
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="BufferingForwardingAppender" type="log4net.Appender.BufferingForwardingAppender" >
<bufferSize value="512" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="FATAL"/>
</evaluator>
<appender-ref ref="RollingFileAppender" />
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="BufferingForwardingAppender" />
</root>
</log4net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这就是我在Windows窗体的静态初始化程序中配置它的方法.
static Window1() …Run Code Online (Sandbox Code Playgroud) 我正在使用spring.net IOC依赖注入为我的asp.net Web应用程序设置我的xml配置文件.我在web.config中引用了每个配置文件.spring.net配置文件(settings.xml)中的设置示例如下:
<object id="obj1"
type="NS.Common.Cache.Class, NS.Common"
singleton="true"
init-method="Initialize"
destroy-method="Dispose">
<property name="Name" value="My Name" />
</object>
Run Code Online (Sandbox Code Playgroud)
一切正常.
现在我在多个环境中安装我的Web应用程序,所以我正在为环境创建一个spring.net配置文件,例如.dev,qa,prod.
因此,在安装应用程序时,web.config中会引用适用的环境spring文件.这是自动安装程序的一部分.
在qa环境文件中,我想将"obj1"上面的对象重新定义为:
<object id="obj1"
type="NS.Common.Cache.Class2, NS.Common"
singleton="true"
init-method="Initialize"
destroy-method="Dispose">
<property name="Name" value="My New Name" />
</object>
Run Code Online (Sandbox Code Playgroud)
但是,由于这是自动的(添加对环境文件的引用),因此不会更改settings.xml文件.
现在引用具有相同id的已定义对象的2个文件 - 这会导致主要问题,因为将发生运行时错误.
是否有任何方法可以包含在qa.xml和flag等中以突出显示此对象定义覆盖具有相同对象ID的任何其他xml文件中的任何其他已定义对象?
我正在尝试使用以下路径连接到远程私有MSMQ队列:
"FormatName:DIRECT=OS:remoteMachineName\Private$\MyQueue"
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
"The specified format name does not support the requested operation. For example, a direct queue format name cannot be deleted."
Run Code Online (Sandbox Code Playgroud)
我显然做错了什么.但是,这确实可以使用本地队列.
我正在使用Spring.Net的Messaging.这是我的配置
<objects xmlns="http://www.springframework.net">
<object id="myQueue" type="Spring.Messaging.Support.MessageQueueFactoryObject, Spring.Messaging">
<property name="Path" value="FormatName:DIRECT=OS:remoteMachineName\Private$\MyQueue"/>
</object>
<object id="messageQueueTemplate" type="Spring.Messaging.Core.MessageQueueTemplate, Spring.Messaging">
<property name="DefaultMessageQueueObjectName" value="myQueue"/>
</object>
<object id="messageGateway" type="My.MessageGateway, My.Assembly">
<property name="MessageQueueTemplate" ref="messageQueueTemplate"/>
</object>
</objects>
Run Code Online (Sandbox Code Playgroud) 我一直在阅读Evans关于DDD的书,并且正在考虑如何在.NET中实现聚合.目前,我只能想出一个方法; 在单独的类库中隔离聚合.然而,这看起来有点过分(我更喜欢将所有域对象保存在一个库中),我想知道是否有不同的方法?
1 lib/aggregate的原因如下:聚合根需要知道它负责对"子对象"的所有访问,聚合根也可以返回子对象作为其成员的结果.因此,这些子对象的成员(聚合根所需)不能公开.因此,您唯一的选择是将它们设置为内部(因为它们仍然需要由聚合根调用).但是,通过将所有聚合放在一个项目中,仍然可以从已获取子对象的其他域对象访问这些成员.这是不合需要的,因为它允许绕过聚合根.通过分离不同库中的所有聚合,解决了这个问题.
一些额外的信息:
我查看了DDD java示例代码,并将每个聚合(包括所有子对象的类)打包到另一个包中.只能从聚合根调用的成员没有访问修饰符(例如:) Delivery.updateOnRouting.在java中,没有访问修饰符的成员是包私有的(仅在同一个包中可用).所以这将是正确的行为.
的.NET代码示例,但是,将所有的域对象在一个类库,然后使相应的成员公开.对我来说,这似乎是不正确的.
我在Visual Studio(2010)中有这个C#项目,我想<appSettings>在项目的App.config文件的部分中引用我的主目录中的文件.也就是说,我使用这种语法:
<appSettings>
<add key="Database" value="sqlite:///C:\Users\arvek\test.db3" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
是否可以通过变量引用我的主目录(C:\ Users\arvek)而不是直接硬编码?F.ex.:value ="sqlite:/// $ HOME\test.db3".

更新:
这是来自调试器的查询,它是从字符串生成器中检索的:
{SELECT * FROM FCR.V_REPORT WHERE DATE BETWEEN to_date('14/09/2001' , 'dd/mm/yyyy') AND to_date('30/09/2011' , 'dd/mm/yyyy')}
Run Code Online (Sandbox Code Playgroud)
如果删除大括号并在导航器中将其发布,则可以正常工作.
原版的:
我在运行程序时遇到问题.sql navigator中的查询返回192行,但是当我在c#(visual studio 2010)上运行查询时,查询返回0行.下面是我的c#代码:
public static DataTable GetReport(string date1, string date2)
{
DatabaseAdapter dba = DatabaseAdapter.GetInstance();
string SqlQuery =
string.Format(@"SELECT *
FROM FCR.V_REPORT
WHERE DATE BETWEEN to_date('{0}' , 'dd/mm/yyyy')
AND to_date('{1}' , 'dd/mm/yyyy')", date1, date2);
OracleDataReader reader = dba.QueryDatabase(SqlQuery);
DataTable dt = new DataTable();
dt.Load(reader);
int temp = dt.Rows.Count;
return dt;
}
Run Code Online (Sandbox Code Playgroud)
这是我在sql navigator中使用的查询(返回192行):
SELECT *
FROM FCR.V_REPORT
WHERE DATE BETWEEN to_date('01/01/2001' …Run Code Online (Sandbox Code Playgroud) 我有一个要求,要求我使用Spring.net来获取存储在app.config中的连接字符串,然后将检索到的连接字符串注入实例化对象.
我怎么能用Spring.net的xml配置呢?
例如,而不是我的代码执行此操作:
// Spring.net config:
<object name="myService" type="com.acme.MyService, com.acme">
<constructor-arg type="System.String" value="myConnectionName"/>
</object>
// Web.config:
<connectionStrings>
<add name="myConnectionName" connectionString="DB_connectionstring"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
// Codes:
public class MyService {
public MyService(string connectionName) {
var connectionString = ConfigurationManager.AppSettings[connectionName];
// use connectionString to create a DB connection, etc
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这样:
// Spring.net config:
<object name="myService" type="com.acme.MyService, com.acme">
<constructor-arg type="System.String" ref="retrievedConnectionString"/>
</object>
// How to make a call similar to "ConfigurationManager.AppSettings[connectionName]" and get the connection string from Web.config and put inside "retrievedConnectionString"?
// Web.config: …Run Code Online (Sandbox Code Playgroud) .net configuration configurationmanager connection-string spring.net
我想从Spring.NET Aspect库使用Logging方面和log4Net.我发现这篇文章如何将log4Net与Common Logging API一起使用.
我的测试应用程序是控制台,基于.NET 4.0客户端配置文件.
所以我在我的项目中引用这些库:
上面的程序集来自Program Files\Spring.NET 1.3.2\bin \net\4.0
我在Program Files\Spring.NET 1.3.2\bin \net\4.0中找不到程序集Common.Logging.Log4Net.dll 所以我从SourceForge下载这个程序集:
我在app.config中配置了logger:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/>
</sectionGroup>
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] …Run Code Online (Sandbox Code Playgroud) 它在陈述的文件,你应该总是短暂的拦截.如果我有这个示例代码;
//register interceptor
container.Register(Classes.FromAssemblyNamed("Sample.Interceptors")
.BasedOn<Castle.DynamicProxy.IInterceptor>()
.LifestyleTransient());
//Configure components to intercept
container.Register(Classes.FromAssemblyNamed("Sample.Component")
.IncludeNonPublicTypes().InNamespace("Sample.Component", true)
.Configure(c=>
c.Interceptors(InterceptorReference.ForType<SampleInterceptor>())
.Anywhere.LifestyleSingleton())
.WithService.DefaultInterfaces()
);
Run Code Online (Sandbox Code Playgroud)
我是否应该担心发布SampleInterceptor,或者Sample.Component在容器释放服务后是否会自动释放?
我想用@variable(@variable:"file.less")将file.less导入main .less.
我试过这种方式:
@var: 'file.less';
@import @var
Run Code Online (Sandbox Code Playgroud)
或者这样:
@import "@var"
Run Code Online (Sandbox Code Playgroud)
要么:
@import "@{var}"
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
有任何想法吗?
c# ×4
spring.net ×4
.net ×3
log4net ×2
app-config ×1
architecture ×1
asp.net ×1
css ×1
import ×1
interceptor ×1
java ×1
less ×1
msmq ×1
oracle10g ×1
oracle11g ×1
sql ×1
variables ×1