我正在尝试将我的webapp日志记录到local4级别的syslog中.环境:Tomcat6,OpenSolaris,Struts2,log4j.我的log4j.properties的内容如下 -
log4j.rootLogger=INFO, SYSLOG
log4j.appender.SYSLOG=org.apache.log4j.net.SyslogAppender
log4j.appender.SYSLOG.syslogHost=localhost
log4j.appender.SYSLOG.layout=org.apache.log4j.PatternLayout
log4j.appender.SYSLOG.layout.ConversionPattern=%d [%t] %-5p - %m%n
log4j.appender.SYSLOG.Facility=local4
Run Code Online (Sandbox Code Playgroud)
我编辑了/etc/syslog.conf并在最后添加了以下行 -
local4.notice /var/log/mylog.log
Run Code Online (Sandbox Code Playgroud)
在此之后,我重新启动了syslog服务.当我从shell运行以下命令时,它会正确记录在/var/log/mylog.log中.这主要意味着系统日志服务正常运行 -
logger -i -p local4.notice -t "check log" "test message"
Run Code Online (Sandbox Code Playgroud)
但我完全不明白为什么来自webapp的日志永远不会到达/var/log/mylog.log.我的log4j配置对SysLogAppender是否正确?
当我尝试普通的appender,如"DailyRollingFileAppender"等,日志工作正常..但我只是无法让SyslogAppender工作..
谢谢!-Keshav
将ms word内容粘贴到richtextbox时出现问题.
当我复制word文档的内容并将其粘贴到使用C#编写的Windows应用程序中的richtextbox时.链接显示如此;
这是测试..转到谷歌. <http://www.google.com>
邮件:项目 <mailto:cbn@test.com>
也可以通过从word中加载保存的RTF文档来创建该问题.
我怎么能纠正这个,请帮忙..
提前致谢.
为非泛型类设置泛型构造函数有什么好处?Java规范允许以下内容:
class NonGeneric {
<T> NonGeneric() { }
...
NonGeneric ref = new <String> NonGeneric();
}
Run Code Online (Sandbox Code Playgroud)
可以提出一个现实的例子来说明它何时提升了班级的类型安全性?首先如何比使用Generic更好.
我知道Java设计者希望构造函数与方法更加一致.鉴于构造函数可能有副作用,泛型构造函数可以使用泛型来改变一些不保留引用的参数,如
<T> NonGeneric(T obj, List<T> list) {
list.add(obj);
// Don't hold a reference to list
}
Run Code Online (Sandbox Code Playgroud) 我在类型为varbinary的字段中将DataTable类型的对象保存到SQL 2005数据库中.我想要找回它,但我无法输入它.这就是我拯救它的方式.
MemoryStream memStream = new MemoryStream();
StreamWriter sw = new StreamWriter(memStream);
sw.Write(dt);
con.Open();
using (SqlCommand cmd = new SqlCommand("INSERT INTO Tables(TableName, TableData, QuestionID) VALUES (@TableName, @TableData, @QuestionID)", con))
{
cmd.Parameters.Add("@TableName", SqlDbType.VarChar).Value = "a new table";
cmd.Parameters.Add("@TableData", SqlDbType.VarBinary,Int32.MaxValue).Value = memStream.GetBuffer();
cmd.Parameters.Add("@QuestionID", SqlDbType.VarChar).Value = "2";
cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)
'dt'是DataTable对象实例.
Public Sub cleanTables(ByVal prOKDel As Short)
Dim sqlParams(1) As SqlParameter
Dim sqlProcName As String
sqlProcName = "db.dbo.sp_mySP"
sqlParams(1) = New SqlParameter("@OKDel", prOKDel)
Try
dbConn.SetCommandTimeOut(0)
dbConn.ExecuteNonQuery(CommandType.StoredProcedure, sqlProcName, sqlParams)
Catch ex As Exception
Finally
End Try
End Sub
Run Code Online (Sandbox Code Playgroud)
在那儿
CommandType.StoredProcedure...CommandType.Function
sqlParams(1) = New SqlParameter("@OKDel", prOKDel)...
Run Code Online (Sandbox Code Playgroud)
最后是datatable dt = dbConn.Execute(CommandType.StoredProcedure,sqlProcName,sqlParams)
谢谢
可以推荐哪种好的工具来模拟Internet Explorer 6?我宁愿不必去某处安装Windows XP的旧版本.
是的,所以我有一个可枚举的,并希望从中获得不同的值.
使用System.Linq,当然有一个名为的扩展方法Distinct.在简单的情况下,它可以在没有参数的情况下使用,例如:
var distinctValues = myStringList.Distinct();
Run Code Online (Sandbox Code Playgroud)
好的,但如果我有一个可以指定相等性的可枚举对象,唯一可用的重载是:
var distinctValues = myCustomerList.Distinct(someEqualityComparer);
Run Code Online (Sandbox Code Playgroud)
equality comparer参数必须是.的实例IEqualityComparer<T>.当然,我可以做到这一点,但它有点冗长,而且很有说服力.
我所期望的是一个需要lambda的重载,比如Func <T,T,bool>:
var distinctValues
= myCustomerList.Distinct((c1, c2) => c1.CustomerId == c2.CustomerId);
Run Code Online (Sandbox Code Playgroud)
任何人都知道是否存在某些此类扩展或某些等效的解决方法?或者我错过了什么?
或者,有没有一种方法可以指定IEqualityComparer内联(embarass me)?
更新
我找到了Anders Hejlsberg对MSDN论坛中关于这个主题的帖子的回复.他说:
您将遇到的问题是,当两个对象比较相等时,它们必须具有相同的GetHashCode返回值(否则Distinct内部使用的哈希表将无法正常运行).我们使用IEqualityComparer,因为它将Equals和GetHashCode的兼容实现打包到一个接口中.
我认为那是有道理的..
我最近问了这个问题并使用jquery获得了一个很好的解决方案来实现自动完成:
解决方案是使用以下语法:
$("#suggest3").autocomplete(someArray, {
multiple: true,
mustMatch: true,
autoFill: true
Run Code Online (Sandbox Code Playgroud)
});
我现在在电子邮件地址列表上有自动完成功能,我需要更进一步映射到gmail之类的功能,其中我在列表中包含"真实"名称和电子邮件地址,以便用户可以输入名称或电子邮件地址,它会找到条目:
因此列表看起来与此类似,用户可以通过键入"Firs ..."进行搜索.或"emailAdd ..."
"First Last" <emailAddress>
"First1 Las1t" <emailAddress1>
"First2 Last2" <emailAddress2>
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个.NET框架来创建一个模拟shell(如cmd)的控制台应用程序,即带有一个输入命令的输入(由我定义).
有人知道这样做的编程示例或框架吗?
编辑:我甚至想提出这个问题暂时疯狂,但当时有意义(见下面的编辑2).
对于.NET 3.5项目,我有两种类型的资源(R1和R2),我需要检查它的可用性.每种资源类型可以随时(例如)有10个实例.
当其中一种资源可用时,我的工作线程需要唤醒(存在可变数量的线程).在早期的实现中,只有一种资源类型,我使用Semaphore来检查可用性.
现在我需要等待两个单独的信号量(S1和S2)来跟踪资源的可用性.
WaitHandle[] waitHandles = new WaitHandle[] { s1, s2 };
int signalledHandle = WaitHandle.WaitAny(waitHandles);
switch (signalledHandle)
{
case 0:
// Do stuff
s1.Release();
case 1:
// Do stuff
s2.Release();
}
Run Code Online (Sandbox Code Playgroud)
然而,这有一个问题.从MSDN文档WaitAny:
如果在调用期间发出多个对象的信号,则返回值是具有所有信号通知对象的索引值最小的信号通知对象的数组索引.
这表明我可能会在打电话后将我的信号量计数减少1 WaitAny.因为signalledHandle将指示s1已发出信号,我将开始使用资源R1,并在完成后释放它.但是,由于我不知道S2是否已发出信号,因此此资源的可用性计数现在可能已关闭.如果发生这种情况10次,我的信号量将永久"空",资源R2将不再使用.
处理这个问题的最佳方法是什么?我是否应该从使用两个信号量切换到简单计数器,并在任何一个计数器更改时发出AutoResetEvent信号?我错过了一些更优雅的方法吗?
编辑1:
根据Ravadre的说法,之后只有一个信号量会被改变WaitAny.略微修改他的例子似乎证实了这一点,但有没有人可以指出我指出这个的一些官方文件?
编辑2:
我在回家的路上想着这个.只有这样,我才意识到,WaitAny任何用途都必须如此.这个问题不仅限于信号量,而是几乎任何类型的同步对象,WaitAny几乎没用.
c# ×5
java ×2
.net ×1
ado.net ×1
autocomplete ×1
c#-3.0 ×1
copy-paste ×1
emulation ×1
function ×1
generics ×1
jquery ×1
lambda ×1
log4j ×1
ms-word ×1
opensolaris ×1
polymorphism ×1
richtextbox ×1
search ×1
sql ×1
sql-server ×1
struts2 ×1
syslog ×1
testing ×1
vb.net ×1
waithandle ×1