目前我正在使用log4j,但许多Java技术使用slf4j(例如hibernate).我想配置log4j而不是slf4j.这是我的log4j文件:
log4j.rootLogger=trace, stdout, file
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.encoding=UTF-8
log4j.appender.stdout.target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.conversionPattern=%d{ABSOLUTE} %5p %t %c{1}:%M:%L - %m%n
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.encoding=UTF-8
log4j.appender.file.append=false
log4j.appender.file.file=myproject.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern=%d{ABSOLUTE} %5p %t %c{1}:%M:%L - %m%n
Run Code Online (Sandbox Code Playgroud)
有人能给我看一个适合它的配置文件吗?PS如何从Servlets登录?因为他们在tomcat webapps的战争中.在这种情况下,他们在哪里写日志?
在我的python脚本中,我有这个:
count = 0
while 1:
print count
count += 1
Run Code Online (Sandbox Code Playgroud)
我保存了这个文件并运行了它.
nohup python count.py >> test.log &
$tail -f test.log
Run Code Online (Sandbox Code Playgroud)
我拖尾时什么都没有出现.
我想找到一个很好的第三方工具,用于记录我在远程服务器上的所有Android应用程序事件和视图.我只能访问应用程序的客户端而无法控制服务器端.
我想从我的应用中跟踪以下内容:
我目前正在使用ACRA + Google文档(旧格式)来跟踪崩溃.但是不能再使用此设置创建任何新项目(不推荐使用谷歌文档支持).
还有什么是提交日志的好架构 - 在每个事件中,将它们组合在一起.
当我在一个独立的tomcat容器中启动我的webapp时,我看到Flyway日志记录正常(如果找到则使用commons-logging,如下面的Axel所述,则使用sout).
但是,当我使用apache tomcat maven插件(tomcat7-maven-plugin)时,我看到以下内容:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Run Code Online (Sandbox Code Playgroud)
没什么好看的.这是完整的代码:
public void contextInitialized(ServletContextEvent sce) {
Flyway flyway = new Flyway();
flyway.setDataSource(...);
flyway.migrate();
}
<listener>
<listener-class>com.blah.conf.FlywayListener</listener-class>
</listener>
Run Code Online (Sandbox Code Playgroud)
我正在使用logback-classic进行日志记录.泽西和吉斯都记录正常(虽然我删除它们以缩小问题范围).
这是我在类路径中看到的唯一与日志相关的jar:
logback-classic-1.0.13
logback-core-1.0.13
slf4j-api-1.7.5
Run Code Online (Sandbox Code Playgroud)
这是slf4j的依赖树:
mvn dependency:tree -Dverbose -Dincludes=org.slf4j
[INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ hello ---
[INFO] com.hello:hello:war:1.0-SNAPSHOT
[INFO] \- ch.qos.logback:logback-classic:jar:1.0.13:compile
[INFO] \- org.slf4j:slf4j-api:jar:1.7.5:compile
Run Code Online (Sandbox Code Playgroud)
所以我更新的问题是,为什么使用tomcat maven插件vs独立存在差异?我没有在"target"文件夹中看到临时部署的任何其他jar.
更新:添加jcl-over-slf4j后,问题就消失了.
我有一个关于如何配置我的python记录器的问题.您可以在下面看到我当前设置的记录器.(http://docs.python.org/2/howto/logging-cookbook.html)
logger = logging.getLogger("someName")
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler("./log/log.out", "w")
fh.setLevel(logging.DEBUG)
ch = logging.StreamHandler(sys.stderr)
ch.setLevel(logging.ERROR)
frm = logging.Formatter('%(asctime)s,%(msecs)d %(name)s %(levelname)s %(message)s','H:%M:%S')
fh.setFormatter(frm)
ch.setFormatter(frm)
logger.addHandler(fh)
logger.addHandler(ch)
Run Code Online (Sandbox Code Playgroud)
有没有办法以这样的方式配置记录器,它也会写下如下所示的错误消息:
print a
>>> NameError: global name 'a' is not defined
Run Code Online (Sandbox Code Playgroud)
非常感谢你的帮助.
我很新laravel 4,我想storage/logs在user尝试连接到我的应用程序时登录到文件内部.
我在里面补充说routes.php:
Event::listen('auth.attempt', function() {
echo 'attempting to logging in';
});
Run Code Online (Sandbox Code Playgroud)
我知道这Laravel 4包括monolog哪个是PHP日志框架,但我不知道它是否是最简单的登录方式.
我可以声明一个filter我添加到before我的route,但这个解决方案不是很优雅.
我有几个线程,每个线程将输出写入stdout.但是,我想将每个线程的输出重定向到彼此独立的单独文件,然后合并它们以保持每个线程的流动.
我的意思是:
Thread1将每个打印,每个异常和每个其他输出写入file1.log,Thread2将每个打印,每个异常和每个其他输出写入file2.log,依此类推.所以我正在寻找的是为每个线程专门设置stdout.但是,设置stdout只能全局工作意味着Thread1和Tread2将始终写入相同的已定义的stdout.我还没有发现如何做到这一点.我不能使用流程,因为另一个问题.
我怎样才能做到这一点?
我指示进程的标准输出/错误并将其存储在我记录到文件的字符串中.
我注意到并非所有的标准输出都存储在文本文件中,所以我必须达到字符串的大小限制.
有谁知道有助于解决这个问题的替代方案?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace Logging
{
class Logger
{
private FileStream file = null;
private StreamWriter writer = null;
public Logger(string _path)
{
if (!File.Exists(_path)) File.Create(_path).Dispose();
file = new FileStream(_path, FileMode.Append, FileAccess.Write, FileShare.Write);
writer = new StreamWriter(file);
}
public void Log(string _text)
{
Console.WriteLine(_text);
using (file)
{
writer.WriteLine("[" + DateTime.Now + "] : " + _text);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)