public void databaseReport(final String outFilename, final boolean postfix, final boolean today, final boolean week) {
        final long t = System.currentTimeMillis();
        final String o = outFilename + (postfix ? String.valueOf(t): "");
        final File f = new File(o);
        
        StringBuffer buf = new StringBuffer(1024);
        buf = new StringBuffer(1024);
        buf.append("\"DBID\"");
        buf.append(",\"recID\"");
        buf.append(",\"ShortErrMsgType\"");
        buf.append(",\"isIE_at_Error\"");                             
        buf.append(",\"ShortBrowserSys\"");       
        
        buf.append(",\"Server\"");
        buf.append(",\"JVM\"");         
        buf.append(",\"JVMStr\"");        
        
        buf.append(",\"LOGFileQuickServerLogPath\"");
        
        buf.append(",\"MONTH\"");
        buf.append(",\"DAY\"");
        buf.append(",\"DATEFIELD\"");
        buf.append(",\"JAVDATE\"");
        buf.append(",\"MILLITIME\"");
        
        buf.append(",\"RecentToday\"");
        buf.append(",\"ErrWithinWeek\"");
        
        buf.append(",\"SessionId\"");        
        buf.append(",\"ExecutionTimeAtError\"");
                       
        buf.append(",\"isSocketTimeOut\"");
        buf.append(",\"UserAgent\"");
        
        buf.append(",\"URLAtErr\"");        
        buf.append(",\"LastURLBegin\"");        
        
        buf.append(",\"ErrMsg\"");
        buf.append(Parser.NL);
        FileWriter fw = null;
        
        int i = 1;
        try {
            fw = new FileWriter(f);         
        } catch (IOException e1) {
            e1.printStackTrace();
        }
        try {                    
            fw.write(buf.toString());
            fw.flush();
            buf = new StringBuffer(1024);
        } catch (IOException e1) {
            e1.printStackTrace();
        } // End of the try catch //
        for (final ParseErrorDataPoint e :  this.listErrorDataPoints) {   
            if (week && !e.newLogTimePrefix.errorAtWeek) {
                continue;
            }
            if (today && !e.newLogTimePrefix.todayOrYesterday) {
                continue;
            }
            buf.append("\"" + i + "\"");
            buf.append(",\"" + e.getBlockParseIndex() + "\"");
            buf.append(",\"" + e.getShortErrorMsgType() + "\"");
            buf.append(",\"" + y(e.isBrowserInternetExplorer()) + "\"");                        
            buf.append(",\"" + e.getBrowserSortableQuickUserAgent() + "\"");            
            buf.append(",\"" + e.newLogTimePrefix.server + "\"");
            buf.append(",\"" + e.newLogTimePrefix.jvm + "\"");            
            buf.append(",\"" + e.newLogTimePrefix.server + "javaServer" + e.newLogTimePrefix.jvm + "\"");                        
            buf.append(",\"" + e.getLinePrefixFile() + "\"");            
            buf.append(",\"" + e.newLogTimePrefix.month + "\"");
            buf.append(",\"" + e.newLogTimePrefix.day + "\"");
            buf.append(",\"" + e.newLogTimePrefix.dayField + "\"");           
            buf.append(",\"" + ( e.newLogTimePrefix.javaDate == null ? "" : String.valueOf(e.newLogTimePrefix.javaDate) ) + "\"");
            buf.append(",\"x" + ( e.newLogTimePrefix.javaDate == null ? "" : String.valueOf(e.newLogTimePrefix.javaDate.getTime()) ) + "\"");            
            buf.append(",\"" + ( e.newLogTimePrefix.todayOrYesterday ? "RecentToday" : "no" ) + "\"");
            buf.append(",\"" + ( e.newLogTimePrefix.errorAtWeek ? "ErrWithinWeek" : "no" ) + "\"");                                   
            buf.append(",\"" + e.getSessionId() + "\"");            
            buf.append(",\"" + e.getProcTimeAtError() + "\"");                                  
            buf.append(",\"" + y(e.isExternalHasTimeoutError()) + "\"");
            buf.append(",\"" + e.getBrowserFullUserAgent() + "\"");                        
            buf.append(",\"" + e.getUrlAtError() + "\"");            
            buf.append(",\"" + e.getUrlLastBeginRequest() + "\"");                                   
            buf.append(",\"" + e.getErrorMessage() + "\"");
            buf.append(Parser.NL);
            i++; 
            if ((i % 100) == 0) {
                try {        
                    LOGGER.info("Writing row..." + i);
                    fw.write(buf.toString());
                    fw.flush();
                    buf = new StringBuffer(1024);
                } catch (IOException e1) {
                    e1.printStackTrace();
                } // End of the try catch //
            }
        } // End of the while //        
        try {        
            fw.write(buf.toString());
            fw.flush();
        } catch (IOException e1) {
            e1.printStackTrace();
        } finally {        
            try {
                fw.close();
            } catch (IOException e1) {
                e1.printStackTrace();
            }
        } // End of try write
        
    }