在我的Slim框架应用程序中,我希望能够将日志消息发送到我运行PHP内置Web服务器的控制台:
php -S localhost:8000 -c /etc/php5/apache2/php.ini-development).
Run Code Online (Sandbox Code Playgroud)
我正在使用monolog记录器:
// index.php
$app->container->singleton('log', function () {
$log = new \Monolog\Logger('myapp');
$log->pushHandler(new \Monolog\Handler\StreamHandler('../logs/app.log', \Monolog\Logger::DEBUG));
return $log;
});
Run Code Online (Sandbox Code Playgroud)
我怎么做?
我正在调试API的一些PHP代码,为此我使用syslog()来查看我的调试消息.问题是我想得到一些有用的日志.例如,是null还是false?通常我会使用var_dump(),但由于我正在使用API,var_dump,f*%$ s在API输出中.
我试过了syslog(LOG_ERR, var_dump($myVar));,但无济于事.
有人知道如何在syslog中"漂亮地打印"变量/数组吗?
我创建了一个"Logger"类,它派生自基类EventSource(事件提供程序).我用它来检测我的应用程序.现在,要查看我的应用程序记录的跟踪消息,我使用perfview GUI工具 - 我首先注册我的事件提供程序"*Logger",然后通过此工具启动收集过程.收集完成后,我可以查看我记录的事件.这很好,但我需要自动化该过程.
在尝试自动执行此过程时,我面临两个问题:
我在下面提供了我的应用程序源代码(代码非常基本和直接.):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics.Tracing;
using System.Threading;
namespace EventLogging
{
class Program
{
static void Main(string[] args)
{
Logger log = Logger.GetLogger();
for (int i = 0; i < 100000; i++)
{
log.WriteError("Logging some serious error",i);
log.WriteWarning("Logging warning",i);
}
}
}
/// <summary>
/// Logger writes to instance.
///
/// </summary>
class Logger : EventSource
{
/// <summary>
///
/// </summary> …Run Code Online (Sandbox Code Playgroud) 我正在尝试部署一个使用logback常规配置文件的webapp。
我看到在xml文件中,您可以引用$ {catalina.base}
有没有办法从logback.groovy引用它?我想要引用tomcat主页或日志文件夹。即使我没有设置环境变量,我也希望它能正常工作。
如果按原样编写,则会收到“没有此类属性:catalina”
我试图使我的日志进入tomcat / logs / ...而不管主机名。我想使其特定于Webapp,而不是tomcat / conf /
我想在子进程日志中使用子进程的名称(如"mysuperservice_1","mysuperservice_2"等等).使用python构建的服务.
我该怎么做?TIA!=)
EDIT1
我的supervisord配置看起来像:
[program:superservice]
command = python manage.py superservice
process_name=%(program_name)s_%(process_num)s
autostart=true
autorestart=true
numprocs=4
stdout_logfile=spool/logs/superservice.log
stderr_logfile=spool/logs/superservice.error.log
Run Code Online (Sandbox Code Playgroud)
它将产生这样的过程:
dizpers 4912 0.3 0.5 170472 21976 ? Sl 22:09 0:00 python manage.py superservice
dizpers 4913 0.3 0.5 170476 22520 ? Sl 22:09 0:00 python manage.py superservice
dizpers 4920 0.2 0.5 170476 22524 ? Sl 22:09 0:00 python manage.py superservice
dizpers 4926 0.3 0.5 170476 22432 ? Sl 22:09 0:00 python manage.py superservice
Run Code Online (Sandbox Code Playgroud)
所以,我不能只是简单地获取进程名称(例如,通过psutil模块).我需要通过supervisord以某种方式获得它.
我需要将数据记录到文件以及控制台。我这样设置:
# set up logging
logging.basicConfig(level = logging.INFO,
format ='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt ='%Y-%m-%d %H:%M:%S',
handlers=[logging.FileHandler(dir + '/log.log'), logging.StreamHandler()]
)
Run Code Online (Sandbox Code Playgroud)
然后我添加这样的数据:logging.info('Server started')。在控制台中,我看到了文本,但文件为空。如果我删除tgis文件,python将创建一个新文件,但它仍然是空的。
是否可以在运行时从包含的CodeSite express获取异常的堆栈跟踪?如果是这样,有没有人有这方面的经验或实例?
如果失败了,有没有办法通过开源库实现这一目标?
我将日志记录引入了一个已有10年历史的Delphi应用程序,因此在没有日志记录的情况下,仍有相当大比例的应用程序.因此,对于尚未重写的区域,我有一个Application.OnException挂钩.对我们在生产中获得的零星访问冲突进行有意义的堆栈跟踪将非常有用.下面是我已经拥有的,我很失望地发现StackTrace属性为空.
class procedure Log.Error(const err: Exception; const method: string);
begin
FileLog(err, method);
end;
class procedure Log.FileLog(const err: Exception; const method: string);
var
_msg: TStringList;
begin
//_msg := Format('%s Failed:%3:s%1:s%3:s %2:s%3:s', [PreparedEntry(method), err.Message, err.StackTrace, sLineBreak]);
_msg := PreparedEntry( Format('%s Failed:', [method]));
_msg.Add(err.Message);
_msg.Add(err.StackTrace);
WriteLog(_msg, _logFileName);
end;
Run Code Online (Sandbox Code Playgroud)
我们正处于从delphi win32应用程序迁移到仍然为delphi客户端应用程序提供服务的多层.net wcf服务器应用程序的高级阶段.长期和短期是在说服管理层购买Delphi XE5(只是为了获得改进的json支持和实时绑定)之后,要求购买另一个delphi是非常难以证明的.
谢谢
我正在使用文件IO操作将我的应用程序日志写入文本文件.一旦用户启动应用程序,我就会记录详细信息(例如谁发布,日期时间,机器名称等).我有点担心,因为写入文件的文本没有反映,除非它遇到file.Close().如果我使用file.Close()方法,我无法再将日志写入文件,因为它说"无法写入已关闭的TextWriter"
有没有办法处理这种情况.我知道logutil符合我的要求,但不幸的是我无法使用它.
access.log格式配置可能是这样的
'$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"'
Run Code Online (Sandbox Code Playgroud)
有没有办法生成一个正则表达式来匹配access.log根据它?我可以根据实际日志编写正则表达式:
'112.3.194.120 - - [17/Jan/2015:20:07:34 +0800] "GET /Introdction%20to%20Guitar/1%20-%202%20-%20Choosing%20the%20Right%20Guitar-%20Right-Handed%20vs%20Left-Handed%20(3-20).mp4 HTTP/1.1" 206 546849 "http://example.com/video/302/" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36"'
Run Code Online (Sandbox Code Playgroud)
但我不能用格式配置写正则表达式.有人可以帮忙吗?
我们log4j2在我们的系统中广泛使用,并使用它进行配置log4j2.xml.
现在我需要一个运行的新应用程序,jobs我想分别捕获在时间X和Y之间产生的所有日志并将其放入数据库中.从我们的框架正常记录应该像往常一样(到文件或log4j2.xml指向的地方),但从时间X到时间Y.
我还希望捕获所有日志记录,最好是一个字符串列表或可以保存在数据库表中的东西.
我的想法是创建一个新的Appender(捕获所有日志输出)并动态添加/删除该appender以启动和停止日志记录?那会有用吗?我也可以在框架类中重新配置记录器吗?