我们正在尝试记录一些查询,以查看是否可以解决我们应用的一些性能问题。问题是一个基本问题,我们如何将查询存储在一个文件中,然后我们可以以一种方式读取这些文件,这样我们就可以解析每个查询而不会限制新行和特殊字符,也不会将查询本身包装在字符中。
我们不能限制新的行,空格等或用一些字符组合包装查询(我们实际上尝试了后者,虽然不太可能,但是一个用户最终插入了那个确切的组合)因为它是一个db查询,它真的可以包含任何东西
答案 0 :(得分:3)
您可以尝试使用XML格式,例如
<query timestamp="2014-03-23 11:12:00">
SELECT * FROM MYTABLE
</query>
这可以通过简单的字符串连接/操作或使用任何XML API(如JAXB,XStream等)手动构建。如果手动构造XML,请不要忘记转义SQL中的XML字符(可以使用Apache commons库中的StringEscapeUtils来执行此操作)。
或者,您可以使用Apache Log4J,将输出定义为XML。
这是相当不错的教程:http://howtodoinjava.com/2013/04/08/how-to-create-logs-in-xml-format-using-log4j/
Javadoc在这里:http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/XMLLayout.html