我正在尝试在我的新项目中采用Log4j2,但我得到了我的日志catalina.out,第一个始终是:ERROR StatusLogger Unable to locate a logging implementation, using SimpleLogger.看来我已根据Log4j2文档完成了所有工作,但仍然如此.
这是我实际做的:
log4j-api-2.0-beta3.jar到我的项目中log4j2.xml文件并将其放在类路径上的位置(当前,在/usr/local/tomcat/home/lib.实际上,我从Log4J2网页中获取了一个示例文件.我使用的是Tomcat 7,MacOS X 10.8,Java 7.
我错过了什么?
以防万一,这是我正在使用的log4j2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="warn" name="MyApp" packages="">
<appenders>
<File name="MyFile" fileName="logs/app.log">
<PatternLayout>
<pattern>%d %p %C{1.} [%t] %m%n</pattern>
</PatternLayout>
</File>
</appenders>
<loggers>
<root level="trace">
<appender-ref ref="MyFile"/>
</root>
</loggers>
</configuration>
我的应用程序必须发送一个文本文件,它首先必须生成一个String.该文本包含非ASCII符号,所以我希望它是UTF-8.我已经尝试了很多变种,但我收到的所有附件都是一些问号.并且,当我发送与邮件正文相同的文本时,它可以正常工作.
以下是生成带附件的MimeBodyPart的代码行:
String attachment = "??????";
messageBodyPart.setContent(new String(attachment.getBytes("UTF-8"),
"UTF-8"),"text/plain; charset=UTF-8");
Run Code Online (Sandbox Code Playgroud)
我也尝试使用没有任何转换的字符串,只使用字节,现在,如你所见,我试图从字节生成一个字符串...
我究竟做错了什么?(我确实记得在另一个项目中这样做,但是我不再能够访问它的源代码).
先感谢您.提莫菲.
UPDATE
阅读完回复后,经过一些不成功的试验后,我认为最好发布我的邮件代码.我有一个Mailer类,它负责邮件发送,其他类可以调用它的静态sendMessage()方法来发送消息.这一切都在Google App Engine上运行.
public static void sendMessage(String to, String subject, String msgBody,
String attachment) throws AddressException, MessagingException {
Properties props = new Properties();
Session mailSession = Session.getDefaultInstance(props, null);
Message msg = new MimeMessage(mailSession);
String email = "bla-bla-bla"; // userService.getCurrentUser().getEmail();
msg.setFrom(new InternetAddress(email));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
InternetAddress[] addresses = { new InternetAddress("bla-bla-bla") };
msg.setReplyTo(addresses);
msg.setSubject(subject);
Calendar cal = Calendar.getInstance();
String fileName = cal.get(Calendar.YEAR) + …Run Code Online (Sandbox Code Playgroud) 我的应用程序中有两个div,我希望它们具有相同签名的自定义函数,但具有不同的操作,以便我可以将"当前"div存储在变量中,并调用类似于:
myCurrentDiv.theFunction(someEventData);
$("#myFirstDiv").theFunction = function() {
alert("theFunction on firstDiv");
}
$("#mySecondDiv").theFunction = function() {
alert("theFunction on secondDiv");
}
我想对我的表单中的所有输入应用一种特殊的样式,这些输入是必需的并且是空的.
当我写在我的CSS中时,它确实有效
input[required='required'] {
bla-bla-bla;
}
Run Code Online (Sandbox Code Playgroud)
但是当我写作时,它不起作用
input[value=''] {
bla-bla-bla;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用jQuery做到这一点,但我想在纯css中做到这一点,如果有可能的话.
可以这样做吗?
蒂莫菲,提前谢谢你.
我试图在FreeBSD上编译Echoprint codegen,但是失败了.但这里是我所得到的,当我尝试运行make或make install
> make "Makefile", line 35: Missing dependency operator "Makefile", line 39: Need an operator "Makefile", line 41: Need an operator "Makefile", line 50: warning: duplicate script for target "%.o" ignored "Makefile", line 53: warning: duplicate script for target "%.o" ignored "Makefile", line 56: warning: duplicate script for target "%.o" ignored "Makefile", line 61: Missing dependency operator "Makefile", line 62: warning: duplicate script for target "ifeq" ignored "Makefile", line 62: warning: duplicate script for target "(,Darwin)" …
我正要在master分支上启动一个git分支,为我的应用程序添加一些功能,这也会涉及到界面的一些补充.
但是,我已经有一个分支用于其他一些功能,这些功能也涉及一些接口添加.
当我完成它们时,我是否能够将这两个分支合并为主?是否有一些好的做法可能会以某种方式构建xib文件,以便以后合并?
我试图获取一大块字节并使用archive/zipGo中的包压缩它们.但是,我根本无法理解.有没有关于如何做到的例子,是否有任何关于这个神秘包装的解释?
我正在尝试在我的团队中执行一些编码规则.为此,我编写了许多客户端钩子,它们可以正常工作,但是现在我希望在开发人员将修改推送到中央存储库时运行相同的检查.但它们不起作用.
这是我想要做的:
我想逐行遍历推送的文件,检查编码约定违规,如果我找到任何,拒绝推送,也显示行号+违规.
在我的预提交客户端钩子中,我能够通过调用git diff --cached --name-status --diff-filter=AM获取修改文件的列表,以及git cat-file -p :filename在第一次调用中检索的每个文件来获取文件的整个文本.
当我尝试在服务器端update钩子中执行相同操作时,我得到一个空字符串(对于文件列表).
我也试过调用git show --pretty="format:" --name-only newrev(其中newrev是我作为更新钩子的参数得到的SHA git diff-tree -r --name-only --no-commit-id <tree-ish>,以及我在网上找到的其他一些东西,但是我无法清楚地了解发生了什么以及我应该调用什么.
你能帮助我吗?
在我的网络应用程序中,我广泛使用数据库.
我有一个抽象的servlet,需要数据库连接的所有servlet都可以继承.该抽象servlet创建数据库连接,调用抽象方法,该方法必须由继承的servlet覆盖以执行其逻辑,然后关闭连接.我不使用连接池,因为我的应用程序将拥有非常有限的用户和操作.
我的问题是,如果我没有关闭我的继承servlet创建的ResultSets,PreparedStatements和Statements,如果Connection创建它们的s总是关闭的话,那么最糟糕的情况是什么?
在我们的项目中,有时我们在一行上初始化数组,有时我们将它们初始化为块。那是
strings::UniChar const s[] = {'H', 'e', 'l', 'l', 'o'};
与
string :: UniChar const s [] =
{
'H',
'e',
'l',
'l',
'o'
};
我希望clang-format能够区分这两种类型,而不是将第二种转换为第一种,也不要在开括号后对齐元素。那不是这样的:
string :: UniChar const s [] = {'H',
'e',
'l',
'l',
'o'};
有没有一种方法可以使用配置文件来实现?