javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

PHP-日志捕获到的异常

如果我没有在PHP中捕获异常,则会在我的traceback.format_exc()文件中获得带有堆栈跟踪的有用错误消息。 例如,如果我运行:

<?php

  function foo() {
    throw new Exception('Oh no!');
  } 

  foo();

?>

然后将其写入日志:

[2013年3月6日星期三10:35:32] [错误] [客户端86.146.145.175] PHP致命 错误:未捕获的异常“ Exception”,消息为“哦,不!” 在 /var/www/test.php:4\n堆栈跟踪:\ n#0 /var/www/test.php(7): foo()\ n#1 {main} \ n在第4行的/var/www/test.php中抛出

有时我想捕捉异常,但仍然记录该细节。 我在想类似的东西:

<?php

  function foo() {
    throw new Exception('Oh no!');
  } 

  try {
      foo();
  } catch (Exception $e) {
      log_exception($e);
  }

?>

其中traceback.format_exc()将以与为未捕获的异常自动写入的格式基本相同的格式将某些内容写入错误日志-除了使用Caught exception而不是PHP Fatal error: Uncaught exception之外,在字面上可能完全相同。

是否有一个内置函数可以记录这样的异常信息,或将其捕获为字符串? 我正在想象类似于Python中的traceback.format_exc()的东西。

trans by 2020-08-12T04:45:51Z

java-Log4J2属性替换-默认

我只是想知道是否有任何方法可以为LOG4J中的属性替换提供默认值?

我想在java系统属性中传递文件路径,然后将其与“ $ {env:mySystemProperty}”一起使用。 但是,如果开发人员忘记设置此属性怎么办? 然后,我想在log4j2.xml中定义一些有意义的默认值。

任何想法如何实现此功能?

编辑:

env替代不适用于我:

standalone.conf

-DoauthLoginLogPath=/path/oauth2.log

log44j2.xml

<Appender type="File" name="File" fileName="${env:oauthLoginLogPath}" immediateFlush="true">
<Appender type="File" name="File" fileName="${sys:oauthLoginLogPath}" immediateFlush="true">

我可以在wildfly控制台中看到该属性,我重新启动了服务器,但无法完成。

trans by 2020-08-12T01:48:13Z

什么是C#中使用最广泛的日志记录框架?

我正在研究如何在C#应用程序中实现日志记录-它是DLL类库。 哪些日志记录框架被最广泛地使用-什么会给我的DLL用户最大的灵活性和可配置性? 是否有C#等同于log4j?

trans by 2020-08-11T21:11:55Z

http-如何为Java HttpURLConnection通信启用有线日志记录?

我在另一个项目中使用了雅加达公用程序HttpClient,我想要相同的线路记录输出,但是使用“标准” HttpUrlConnection。

我已经使用Fiddler作为代理,但是我想直接从Java记录流量。

捕获连接输入和输出流的内容还不够,因为HTTP标头是由HttpUrlConnection类编写和使用的,所以我将无法记录标头。

trans by 2020-08-10T03:09:52Z

如何使用不同的类和导入即时使用Python登录更改文件句柄

我无法执行实时日志记录fileHandle更改。

例如我有3个班级

loggin.basicConfig()

import logging
class One():
    def __init__(self,txt="?"):
        logging.debug("Hey, I'm the class One and I say: %s" % txt)

loggin.basicConfig()

import logging
class Two():
    def __init__(self,txt="?"):
        logging.debug("Hey, I'm the class Two and I say: %s" % txt)

loggin.basicConfig()

import logging
class Config():
    def __init__(self,logfile=None):
        logging.debug("Reading config")
        self.logfile(logfile)

loggin.basicConfig()

from one import One
from two import Two
from config import Config
import logging

#Set default logging
logging.basicConfig( 
    level=logging.getLevelName(DEBUG), 
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    filename=None
)

logging.info("Starting with stdout")

o=One(txt="STDOUT")
c=Config(logfile="/tmp/logfile")

# Here must be the code that change the logging configuration and set the filehandler

t=One(txt="This must be on the file, not STDOUT")

如果我再次尝试loggin.basicConfig(),它将无法正常工作。

trans by 2020-08-09T21:11:47Z

java-log4j:缩写/缩短程序包名称

我如何在使用log4j生成的日志中缩写/缩短程序包名称。 即我想要的不是com.longpackage.anotherpackage.lastpackage.MyClass,而是c.l.a.l.MyClass。我已经在Artifactory日志中看到了这一点,但无法弄清楚如何使用log4j实现这一点。

trans by 2020-08-09T15:49:21Z

禁用boto日志而不修改boto文件

我正在使用Boto库与AWS通讯。 我想禁用日志记录。 (或重定向到/ dev / null或其他文件)。 我找不到明显的方法来做到这一点。 我试过了,但这似乎无济于事。

import boto
boto.set_file_logger('boto', 'logs/boto.log')

这表示可能[http://developer.amazonwebservices.com/connect/thread.jspa?messageID=52727&#52727],但AFAIK文档未说明如何操作。

trans by 2020-08-09T07:16:11Z

如何通过log4net记录计算机名称?

我将Log4Net与AdoNetAppender一起使用,以将消息从简单的systray应用程序记录到SQL Server 2005数据库中。

我想将机器名和日志消息一起记录下来,因为此应用程序将在多台机器上运行,并且我需要知道消息源自哪一台机器。

但是,我找不到通过我与附加程序一起使用的log4net.Layout.PatternLayout公开此信息的方法。

有没有办法以这种方式通过log4net记录计算机名称?

trans by 2020-08-07T05:22:24Z

logging-在j中滚动垃圾收集器日志

是否可以在Sun JVM中滚动垃圾收集器日志?

目前,我使用以下命令生成日志:

-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -verbose:gc -Xloggc:gc.log 

但是我必须使用fifo队列和rotatelogs手动轮换它们以创建每天的新日志。 我希望对此有更好的解决方案。

也许有一种方法可以从java内部访问此日志条目,以便将它们重定向到log4j?

编辑:使用fifo队列的解决方案还不够好,因为如果从该队列读取的进程(例如rotatelogs)读取速度变慢,则会减慢整个jvm的速度(显然Sun / Oracle会同步进行gc日志记录)

trans by 2020-08-05T15:31:48Z

CodeGo.net>简单的方法来执行错误记录?

我已经创建了一个小型C#winforms应用程序,作为一项附加功能,我正在考虑向其中添加某种形式的错误记录。 任何人都对如何解决此问题有任何建议? 这是我以前从未尝试将其添加到以前的项目中的功能,因此,我欢迎来自具有更多经验的开发人员的建议。

我在考虑将异常写入指定的文本文件或数据库表的方式。 此应用程序将使用几个月,然后在完成较大产品后将其丢弃。

trans by 2020-08-04T05:43:55Z

日志记录-创建MSI日志文件

我一直在尝试使用以下命令为安装程序中的问题创建日志文件:

msiexec /i "installer.msi" /l*v "log.log"
msiexec /i "installer.msi" /l*v
msiexec /l*v /i "installer.msi"
msiexec /l*v "log.log" /i "installer.msi"

以及该命令的其他几个变体,但它始终会弹出一个窗口,指出对msiexec有效的命令行参数。 使msi文件创建日志的正确方法是什么? 我有Windows Installer 4.5。

trans by 2020-08-03T10:25:47Z

java-如何在单个项目中使用多个配置和登录?

用于登录的配置文件可在类路径中找到,因此是Eclipse项目特定的,这不是我想要的。 我正在使用多个Java实用程序,它们全部都驻留在一个项目中(共享类路径),并且其中一些需要使用特定的配置。

我尝试了变量替换和Joram配置器,但没有任何效果。 这很可能是我的错,我有一天要解决,但是现在我需要一个简单的解决方案。

trans by 2020-07-30T20:42:56Z

Java日志记录:显示调用方的源行号(不是日志记录帮助程序方法)

Java的众多(叹气...)日志记录框架都很好地显示了创建日志消息的方法的源文件名的行号:

log.info("hey");

 [INFO] [Foo:413] hey

但是,如果在两者之间有一个辅助方法,则实际的调用者将是该辅助方法,并且信息量不太大。

log_info("hey");

[INFO] [LoggingSupport:123] hey

确定要打印的源位置时,是否有办法告诉日志记录系统从调用堆栈中删除一帧?

我想这是特定于实现的; 我需要的是通过Commons Logging进行的Log4J,但是我很想了解其他选项。

trans by 2020-07-30T11:47:56Z

go-如何在golang中实现基于级别的日志记录?

在golang中是否有任何适用于基于级别的日志记录的好的包装器?如果没有,我应该如何自己实施?

我想要的很简单。 我想要一些功能,例如

log.Error()
log.Info()

等将其输出显示到stdout并将其保存在日志文件中(基于作为命令行参数提供给程序的级别)。如何实现此包装器?

trans by 2020-07-29T11:46:44Z

java-log4j.properties文件-同一类中的多个记录器

我希望在我的应用程序中有两个不同的logger记录器,并且在他们向其尊重日志中写入的内容之间没有“重叠”。

例如:

  • Logger1写入与一组系统事件相关的INFO事件
  • Logger2写入与另一组系统事件有关的INFO事件
  • 两次不应在日志中出现任何条目

我的log4j.properties如下:

log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n

log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n

我的Java代码如下:

public static void main(String[] args) {
    PropertyConfigurator.configure(Client.class
            .getResource("/log4j.properties"));
    xdasLogger = Logger.getLogger("xdasLogger");
    logger = Logger.getLogger(Client.class);

    logger.info("normal");
    xdasLogger.info("xdas");
}

但是我的控制台输出如下:

normal
2012-06-28 09:52:44,580 INFO  xdasLogger - xdas
xdas

请注意,“ xdas”由2986823319519165165和xdasLogger都记录,这是不希望的。

有谁知道我需要对log4j.properties进行哪些更改才能将控制台输出更改为以下内容?

normal
2012-06-28 09:52:44,580 INFO  xdasLogger - xdas

解决方案(取自可接受的答案):

log4j.rootLogger=DEBUG, stdout
log4j.logger.org.apache=DEBUG, stdout
log4j.logger.xdasLogger=DEBUG, xdas

log4j.additivity.org.apache=false
log4j.additivity.xdasLogger=false

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%m%n

log4j.appender.xdas=org.apache.log4j.ConsoleAppender
log4j.appender.xdas.layout=org.apache.log4j.PatternLayout
log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c - %m%n
trans by 2020-07-28T19:58:11Z

日志记录-Graylog和Kibana之间的主要区别是什么

Graylog2和Kibana之间的主要区别是什么?

我们已经使用Graylog2,但我必须承认我不太喜欢UI。只是想知道是否改用Kibana可能会有帮助。

trans by 2020-07-28T11:51:51Z

java-Apache Commons Logging的运行时发现算法有什么问题

Dave Syer(SpringSource)在他的博客中写道:

不幸的是,关于公共日志的最糟糕的事情,以及它在新工具中不受欢迎的原因,也是运行时发现算法。

为什么? 它的运行时发现算法有什么问题? 性能?

trans by 2020-07-27T22:10:55Z

java-如何配置Spring和SLF4J,以便可以进行日志记录?

我有一个要登录的Maven&Spring应用程序。我热衷于使用SLF4J。

我想将所有配置文件放入包含log4j.xml的目录{classpath} / config中,然后使用spring bean进行初始化。

例如

<bean id="log4jInitialization" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetClass" value="org.springframework.util.Log4jConfigurer"/>
    <property name="targetMethod" value="initLogging"/>
    <property name="arguments">
        <list>
            <value>classpath:config/log4j.xml</value>
        </list>
    </property>
</bean>

但是,我收到此警告,没有日志记录。

log4j:WARN找不到记录器的附加程序(org.springframework.context.support.ClassPathXmlApplicationContext)。 log4j:WARN请正确初始化log4j系统。 log4j:WARN有关更多信息,请参见[http://logging.apache.org/log4j/1.2/faq.html#noconfig]。

我在Google上四处搜寻,找不到关于此设置的简单示例。 有任何想法吗?

trans by 2020-07-26T10:21:36Z

android-记录标记最多可以包含23个字符

从AS 1.1 Preview 2更新开始,我所有的Log消息下方都出现红线

Log.d(TAG, "message");

显示消息:“日志记录标签最多可以包含23个字符。”。

除了Android Studio本身之外,我没有从根本上更新任何内容。 这是一个错误吗?

trans by 2020-07-25T03:35:50Z

.net-SQL Server停止加载程序集

我们已经为SQL Server 2008 R2开发了一个程序集。

程序集已经工作了一周。 程序集中的托管存储过程在整个星期中都正常工作,然后停止工作。 我们已经多次看到此问题。 使它再次工作的方法是重新启动SQL Server。

Msg 10314, Level 16, State 11, Line 4
An error occurred in the Microsoft .NET Framework while trying to load assembly id 65536. The server may be running out of resources, or the assembly may not be trusted with PERMISSION_SET = EXTERNAL_ACCESS or UNSAFE. Run the query again, or check documentation to see how to solve the assembly trust issues. For more information about this error: 
  System.IO.FileLoadException: Could not load file or assembly 'myAssembly, Version=2.0.0.490, Culture=neutral, PublicKeyToken=5963130873dd3a75' or one of its dependencies. Exception from HRESULT: 0x80FC0E21 System.IO.FileLoadException:
  at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
  at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
  at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
  at System.Reflection.Assembly.Load(String assemblyString)

我在网上找到了不同的文章。

该知识库文件表明我可能已经从另一个SQL Server恢复了数据库,我发誓没有。

该博客说,如果我在SQL Server 2005上安装.NET 3.5,但我的数据库是SQL Server 2008 R2,则可能会遇到此问题,并且在发生此问题时我没有安装任何软件。

要点是它可以持续一段时间。 它只是停止随机工作。 然后,如果我们重新启动SQL Server,它将重新开始工作。 我以为我的服务器内存真的用完了,但是现在,我再次看到了问题。 SQL Server仅使用300MB RAM,而我的服务器具有16GB RAM。 听起来这是不可能的,因为我内存不足。

现在,我想收集有关此问题的更多信息。 我可以打开查看的任何日志吗? 欢迎提供任何有助于解决此问题的建议。

我已经运行了一些SQL查询。

SELECT * from sys.dm_clr_properties
=============================================
directory   C:\Windows\Microsoft.NET\Framework64\v2.0.50727\
version v2.0.50727
state   CLR is initialized

.

SELECT * from sys.dm_clr_appdomains
======================================================
0x0000000087160240  3   mydatabase.dbo[runtime].2   2011-08-12 08:44:08.940 10  1   E_APPDOMAIN_SHARED  1   1

.

SELECT * from sys.dm_clr_tasks
======================================================
0x000000008185A080  0x00000000818562C8  0x0000000000000000  E_TASK_ATTACHED_TO_CLR  E_ABORT_NONE    E_TYPE_ADUNLOAD 0   0
0x00000000818CE080  0x00000000818CA2C8  0x0000000000000000  E_TASK_ATTACHED_TO_CLR  E_ABORT_NONE    E_TYPE_FINALIZER    0   0
0x0000000081AD4C30  0x000000000400D048  0x0000000000000000  E_TASK_ATTACHED_TO_CLR  E_ABORT_NONE    E_TYPE_USER 0   0

.

SELECT * from sys.dm_clr_loaded_assemblies
<returns nothing>

*更新*

在我的SQL Server上,我创建了四个数据库。 他们每个人都附有相同的程序集。 现在,SQL Server拒绝加载程序集,并给了我上面的错误。

SELECT * from sys.dm_clr_appdomains向我显示了那时仅加载了一个应用程序域,并且SELECT * from sys.dm_clr_appdomains向我显示了根本没有加载任何程序集。

然后,我在其他三个数据库上运行了相同的存储过程。 它工作并成功加载了程序集,并成功运行了存储的proc。 执行存储的过程后。 SELECT * from sys.dm_clr_appdomains现在显示仅加载了四个应用程序域,而SELECT * from sys.dm_clr_loaded_assemblies显示我现在加载了三个程序集。

这很有道理。 现在,我希望如果再次在原始数据库中运行存储的proc,它将按原样加载程序集。 你猜怎么了。 不,不是。 它仍然给我同样的错误。 看来此数据库已完全卡住。 解决此问题的唯一方法是重新启动SQL Server。 我希望在系统表的某处有一个标志/锁来阻止它。 我找不到它了。 任何想法都欢迎。

现在,我的SQL Server处于要求我重新启动才能使其再次运行的状态。

*更新(8/31/2011)*

听起来它与数据库的数据库所有者有关。 这有点复杂。 我们有两个站点和两个AD林。 SQL Server计算机已加入目录林A,但数据库所有者来自目录林B。目录林A和目录林B之间的连接不稳定,因为它们位于通过WAN物理连接的两个不同站点中。

将数据库所有者更改为SQL登录名(非Windows帐户)后,到目前为止,我存储的proc可以运行数周,而且不会中断。

如果有人可以解释,我将接受答案。

trans by 2020-07-24T23:54:49Z

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 下一页 共17页