重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
有
创新互联成立于2013年,是专业互联网技术服务公司,拥有项目成都网站设计、网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元象山做网站,已为上家服务,为象山各地企业和个人服务,联系电话:13518219792
Sun的J2SE提供了一个单一的对数方法——double java.lang.Math.log(double),这很容易使用。请看如下代码:
double x = Math.log(5);
等价于下面的数学方程:x = ln 5或x = loge5其中e是内皮尔数或自然数。
logx(y) =loge(x) / loge(y)
这只需一段简单的Java程序来实现:
package com.generationjava.math;
public class Logarithm {
static public double log(double value, double base) {
return Math.log(value) / Math.log(base);}}计算100的以10为底的对数就变为非常简单了:
double log = Logarithm.log(100, 10); // log is 2.0
参考:
写一个log4j的properties文件,再在web.xml里面配置一下就ok了,你参考下吧
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d]-%-5p %t (%C.%M:%L) | %m%n
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=e:/Logs/PB/root.log
log4j.appender.file.MaxFileSize=5000KB
log4j.appender.file.MaxBackupIndex=5
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d]-%-5p %t | %m%n
log4j.logger.java.sql = DEBUG,ibatis
log4j.additivity.java.sql=false
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG
log4j.logger.java.sql.ResultSet = DEBUG
log4j.logger.com.ibatis = DEBUG,ibatis
log4j.additivity.com.ibatis=false
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientImpl=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser=DEBUG
log4j.logger.com.ibatis.common.util.StopWatch=DEBUG
log4j.appender.ibatis=org.apache.log4j.RollingFileAppender
log4j.appender.ibatis.File=e:/Logs/PB/ibatis.log
log4j.appender.ibatis.MaxFileSize=5000KB
log4j.appender.ibatis.MaxBackupIndex=5
log4j.appender.ibatis.Threshold=DEBUG
log4j.appender.ibatis.layout=org.apache.log4j.PatternLayout
log4j.appender.ibatis.layout.ConversionPattern=[%d]%m%n
log4j.rootLogger=DEBUG,stdout,file
log4j.logger.org.springframework=INFO
log4j.logger.org.displaytag=INFO
log4j.logger.freemarker=INFO
log4j.logger.com.opensymphony.xwork2=INFO
log4j.logger.com.pracbiz=DEBUG
你好,可以配置一下log4j,放在项目的根目录下,就会自定定位错误信息,并且定位到具体行
关于log4j的使用,首先把log4j.jar文件考到工程里面,src在新建log4j.properties文件
配置如下
#A1为控制台输出,A2为文件输出,R为文件输出,并且按天分割.级别为info
log4j.rootLogger=info,A1,A2,R
#将info级别的日志输出到控制台
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Threshold=info
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
#将info级别的日志输出到文件,按天分隔
log4j.appender.R=org.apache.log4j.DailyRollingFileAppender
log4j.appender.R.File=./logs/sslvpn.log
log4j.appender.R.DatePattern = '.'yyyy-MM-dd
log4j.appender.R.Threshold=info
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
#将error级别的日志输出到文件
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.File=./logs/error.log
log4j.appender.A2.Threshold=error
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c] [%p] - %m%n
log4j的功能很强大,可以将日志信息插入数据库,希望可以帮到你
如果没读过《设计模式》这本书,请去读一下。
这里LogFactory明显是使用了工厂模式。把很多类的创建器放在一起使用参数来调用。这里AbcAction.class是参数,意思是调用之前定义好的,和这个class相关的Log类的创建器,构造一个Log类并返回,然后赋值给Log。
这里Log接口也不是Java的通用东西,它具有debug方法,从名字看,意思是把DEBUG信息LOG下来。e.getMessage()就是取Throwable的具体信息。
这是以前在网上看到关于处理log日志的一段代码,一起学习吧。
至于存到数据库,那就得再打开log日志找到所需要的信息做操作了。
import java.util.logging.*;
import java.io.*;
public class MemoryHandlerTest {
FileHandler fhandler;
Logger logger;
MemoryHandler mhandler;
MemoryHandlerTest() {
try {
fhandler = new FileHandler("my.log");
int numRec = 5;
mhandler = new MemoryHandler(fhandler, numRec, Level.OFF);
logger = Logger.getLogger("com.mycompany");
logger.addHandler(mhandler);
} catch (IOException e) {
}
}
public static void main(String args[]) {
MemoryHandlerTest mt = new MemoryHandlerTest();
int trigger = (int) (Math.random() * 100);
for (int i = 1; i 100; i++) {
mt.logger.log(Level.INFO, "日志记录" + i);
if (i == trigger) {
mt.mhandler.push();
break;
}
}
}
}