diff options
author | Christopher Powell | 2002-12-10 19:43:21 +0000 |
---|---|---|
committer | Christopher Powell | 2002-12-10 19:43:21 +0000 |
commit | 478975f1c8767c7ae2abb284ecda41185df32f11 (patch) | |
tree | 96686958c947d966a01dd0dcbab00b026d072fd5 /Documentation/documentation.lyx | |
parent | ef6cec547cbb21caa7204095ee914cba89f6247b (diff) |
Changes on route to 1.18 release (better table creation logic and workarounds for delayed insert kluge).
Diffstat (limited to 'Documentation/documentation.lyx')
-rw-r--r-- | Documentation/documentation.lyx | 1715 |
1 files changed, 1049 insertions, 666 deletions
diff --git a/Documentation/documentation.lyx b/Documentation/documentation.lyx index 50fceba..69f09ae 100644 --- a/Documentation/documentation.lyx +++ b/Documentation/documentation.lyx | |||
@@ -1254,8 +1254,7 @@ which logs all the information required to be compatible with the Combined | |||
1254 | \layout Standard | 1254 | \layout Standard |
1255 | 1255 | ||
1256 | If you don't choose to log everything that is available, that's fine. | 1256 | If you don't choose to log everything that is available, that's fine. |
1257 | The unused columns in your table will have simply contain NULL and do not | 1257 | Fields in the unused columns in your table will simply contain NULL. |
1258 | cause issues. | ||
1259 | \layout Standard | 1258 | \layout Standard |
1260 | 1259 | ||
1261 | Some of the | 1260 | Some of the |
@@ -1297,10 +1296,18 @@ LogSQLMachineID | |||
1297 | 1296 | ||
1298 | \end_inset | 1297 | \end_inset |
1299 | 1298 | ||
1300 | Instructing the module what NOT to log | 1299 | Instructing the module what NOT to log using filtering directives |
1301 | \layout Standard | 1300 | \layout Standard |
1302 | 1301 | ||
1303 | Two | 1302 | One |
1303 | \begin_inset Quotes eld | ||
1304 | \end_inset | ||
1305 | |||
1306 | accept | ||
1307 | \begin_inset Quotes erd | ||
1308 | \end_inset | ||
1309 | |||
1310 | and two | ||
1304 | \begin_inset Quotes eld | 1311 | \begin_inset Quotes eld |
1305 | \end_inset | 1312 | \end_inset |
1306 | 1313 | ||
@@ -1308,12 +1315,59 @@ ignore | |||
1308 | \begin_inset Quotes srd | 1315 | \begin_inset Quotes srd |
1309 | \end_inset | 1316 | \end_inset |
1310 | 1317 | ||
1311 | directives allow you to specify things that the module should not log. | 1318 | directives allow you to fine-tune what the module should not log. |
1312 | These are very handy for keeping your database as uncluttered as possible | 1319 | These are very handy for keeping your database as uncluttered as possible |
1313 | and keeping your statistics free of unneeded numbers. | 1320 | and keeping your statistics free of unneeded numbers. |
1321 | Think of each one as a gatekeeper. | ||
1314 | \layout Standard | 1322 | \layout Standard |
1315 | 1323 | ||
1316 | You are able to tell the module what to exclude based on | 1324 | |
1325 | \emph on | ||
1326 | It is important to remember that each of these three directives is purely | ||
1327 | optional. | ||
1328 | mod_log_sql's default is to log everything. | ||
1329 | |||
1330 | \layout Standard | ||
1331 | |||
1332 | When a request comes in, the contents of | ||
1333 | \noun on | ||
1334 | LogSQLRequestAccept | ||
1335 | \noun default | ||
1336 | are evaluated first. | ||
1337 | This optional, | ||
1338 | \begin_inset Quotes eld | ||
1339 | \end_inset | ||
1340 | |||
1341 | blanket | ||
1342 | \begin_inset Quotes erd | ||
1343 | \end_inset | ||
1344 | |||
1345 | directive lets you specify that only certain things are to be accepted | ||
1346 | for logging, and everything else discarded. | ||
1347 | Because it is evaluated before | ||
1348 | \noun on | ||
1349 | LogSQLRequestIgnore | ||
1350 | \noun default | ||
1351 | and | ||
1352 | \noun on | ||
1353 | LogSQLRemhostIgnore | ||
1354 | \noun default | ||
1355 | it can halt logging before those two filtering directives | ||
1356 | \begin_inset Quotes eld | ||
1357 | \end_inset | ||
1358 | |||
1359 | get their chance. | ||
1360 | \begin_inset Quotes erd | ||
1361 | \end_inset | ||
1362 | |||
1363 | |||
1364 | \layout Standard | ||
1365 | |||
1366 | Once a request makes it past | ||
1367 | \noun on | ||
1368 | LogSQLRequestAccept | ||
1369 | \noun default | ||
1370 | , it still can be excluded based on | ||
1317 | \noun on | 1371 | \noun on |
1318 | LogSQLRemhostIgnore | 1372 | LogSQLRemhostIgnore |
1319 | \noun default | 1373 | \noun default |
@@ -1348,7 +1402,7 @@ You can specify a series of strings after each directive. | |||
1348 | Do not use any type of globbing or regular-expression syntax -- each string | 1402 | Do not use any type of globbing or regular-expression syntax -- each string |
1349 | is considered a match | 1403 | is considered a match |
1350 | \emph on | 1404 | \emph on |
1351 | if it is a substring of the larger request or remote-host, and the comarison | 1405 | if it is a substring of the larger request or remote-host; the comarison |
1352 | is case-sensitive. | 1406 | is case-sensitive. |
1353 | 1407 | ||
1354 | \emph default | 1408 | \emph default |
@@ -1441,7 +1495,81 @@ Tree.Gif | |||
1441 | \begin_inset Quotes erd | 1495 | \begin_inset Quotes erd |
1442 | \end_inset | 1496 | \end_inset |
1443 | 1497 | ||
1444 | would still get logged. | 1498 | would still get logged because of case sensitivity. |
1499 | \layout Standard | ||
1500 | |||
1501 | A summary of the decision flow: | ||
1502 | \layout Enumerate | ||
1503 | |||
1504 | If | ||
1505 | \noun on | ||
1506 | LogSQLRequestAccept | ||
1507 | \noun default | ||
1508 | exists and a request does not match anything in that list, it is discarded. | ||
1509 | \layout Enumerate | ||
1510 | |||
1511 | If a request matches anything in the | ||
1512 | \noun on | ||
1513 | LogSQLRequestIgnore | ||
1514 | \noun default | ||
1515 | list, it is discarded. | ||
1516 | \layout Enumerate | ||
1517 | |||
1518 | If a reqiest matches anything in the | ||
1519 | \noun on | ||
1520 | LogSQLRemhostIgnore | ||
1521 | \noun default | ||
1522 | list, it is discarded. | ||
1523 | \layout Enumerate | ||
1524 | |||
1525 | Otherwise the request is logged. | ||
1526 | \layout Standard | ||
1527 | |||
1528 | This means that you can have a series of directives similar to the following: | ||
1529 | \layout LyX-Code | ||
1530 | |||
1531 | LogSQLRequestAccept *.html *.gif *.jpg | ||
1532 | \layout LyX-Code | ||
1533 | |||
1534 | LogSQLRequestIgnore statistics.html bluedot.jpg | ||
1535 | \layout Standard | ||
1536 | |||
1537 | So the first line instructs the module to | ||
1538 | \series bold | ||
1539 | only | ||
1540 | \series default | ||
1541 | log files with html, gif and jpg suffixes; requests for | ||
1542 | \begin_inset Quotes eld | ||
1543 | \end_inset | ||
1544 | |||
1545 | formail.cgi | ||
1546 | \begin_inset Quotes erd | ||
1547 | \end_inset | ||
1548 | |||
1549 | and | ||
1550 | \begin_inset Quotes eld | ||
1551 | \end_inset | ||
1552 | |||
1553 | shopping-cart.pl | ||
1554 | \begin_inset Quotes erd | ||
1555 | \end_inset | ||
1556 | |||
1557 | will never be considered for logging. | ||
1558 | ( | ||
1559 | \begin_inset Quotes eld | ||
1560 | \end_inset | ||
1561 | |||
1562 | LeftArrow.JPG | ||
1563 | \begin_inset Quotes erd | ||
1564 | \end_inset | ||
1565 | |||
1566 | will also never be considered for logging -- remember, the comparison is | ||
1567 | |||
1568 | \series bold | ||
1569 | case sensitive | ||
1570 | \series default | ||
1571 | .) The second line prunes the list further -- you never want to log requests | ||
1572 | for those two objects. | ||
1445 | \layout Standard | 1573 | \layout Standard |
1446 | 1574 | ||
1447 | Tip: if you want to match all the hosts in your domain such as | 1575 | Tip: if you want to match all the hosts in your domain such as |
@@ -1620,83 +1748,6 @@ LogSQLTransferLogFormat | |||
1620 | machine and thereby analyze the front-end loadbalancing algorithm. | 1748 | machine and thereby analyze the front-end loadbalancing algorithm. |
1621 | \layout Subsubsection | 1749 | \layout Subsubsection |
1622 | 1750 | ||
1623 | Using the same database for production and test | ||
1624 | \layout Standard | ||
1625 | |||
1626 | Although suboptimal, it is not uncommon to use the same backend database | ||
1627 | for the | ||
1628 | \begin_inset Quotes eld | ||
1629 | \end_inset | ||
1630 | |||
1631 | production | ||
1632 | \begin_inset Quotes erd | ||
1633 | \end_inset | ||
1634 | |||
1635 | webservers as well as the | ||
1636 | \begin_inset Quotes eld | ||
1637 | \end_inset | ||
1638 | |||
1639 | test | ||
1640 | \begin_inset Quotes erd | ||
1641 | \end_inset | ||
1642 | |||
1643 | webservers (budgetary constraints, rackspace limits, etc.). | ||
1644 | Furthermore, an administrator in this situation may be unable to use | ||
1645 | \noun on | ||
1646 | LogSQLRemhostIgnore | ||
1647 | \noun default | ||
1648 | to exclude requests from the test servers -- perhaps the generated entries | ||
1649 | are genuinely useful for analytical or QA purposes, but their value after | ||
1650 | analysis is minimal. | ||
1651 | \layout Standard | ||
1652 | |||
1653 | It is wasteful and potentially confusing to permit this internal test data | ||
1654 | to clutter the database, and a solution to the problem is the proper use | ||
1655 | of the | ||
1656 | \noun on | ||
1657 | LogSQLMachineID | ||
1658 | \noun default | ||
1659 | directive. | ||
1660 | Assume a scenario where the production webservers have IDs like | ||
1661 | \begin_inset Quotes eld | ||
1662 | \end_inset | ||
1663 | |||
1664 | web01, | ||
1665 | \begin_inset Quotes erd | ||
1666 | \end_inset | ||
1667 | |||
1668 | |||
1669 | \begin_inset Quotes eld | ||
1670 | \end_inset | ||
1671 | |||
1672 | web02, | ||
1673 | \begin_inset Quotes erd | ||
1674 | \end_inset | ||
1675 | |||
1676 | and so on -- and the test webservers have IDs like | ||
1677 | \begin_inset Quotes eld | ||
1678 | \end_inset | ||
1679 | |||
1680 | test01, | ||
1681 | \begin_inset Quotes erd | ||
1682 | \end_inset | ||
1683 | |||
1684 | |||
1685 | \begin_inset Quotes eld | ||
1686 | \end_inset | ||
1687 | |||
1688 | test02, | ||
1689 | \begin_inset Quotes erd | ||
1690 | \end_inset | ||
1691 | |||
1692 | etc. | ||
1693 | Because entries in the log database are distinguished by their source machine, | ||
1694 | an administrator may purge unneeded test data from the access log as follows: | ||
1695 | \layout LyX-Code | ||
1696 | |||
1697 | delete from access_log where machine_id like 'test%'; | ||
1698 | \layout Subsubsection | ||
1699 | |||
1700 | 1751 | ||
1701 | \begin_inset LatexCommand \label{secMulTable} | 1752 | \begin_inset LatexCommand \label{secMulTable} |
1702 | 1753 | ||
@@ -2399,13 +2450,95 @@ LogSQLTransferLogTable.) | |||
2399 | </VirtualHost> | 2450 | </VirtualHost> |
2400 | \layout Subsubsection | 2451 | \layout Subsubsection |
2401 | 2452 | ||
2453 | Using the same database for production and test | ||
2454 | \layout Standard | ||
2455 | |||
2456 | Although suboptimal, it is not uncommon to use the same backend database | ||
2457 | for the | ||
2458 | \begin_inset Quotes eld | ||
2459 | \end_inset | ||
2460 | |||
2461 | production | ||
2462 | \begin_inset Quotes erd | ||
2463 | \end_inset | ||
2464 | |||
2465 | webservers as well as the | ||
2466 | \begin_inset Quotes eld | ||
2467 | \end_inset | ||
2468 | |||
2469 | test | ||
2470 | \begin_inset Quotes erd | ||
2471 | \end_inset | ||
2472 | |||
2473 | webservers (budgetary constraints, rackspace limits, etc.). | ||
2474 | Furthermore, an administrator in this situation may be unable to use | ||
2475 | \noun on | ||
2476 | LogSQLRemhostIgnore | ||
2477 | \noun default | ||
2478 | to exclude requests from the test servers -- perhaps the generated entries | ||
2479 | are genuinely useful for analytical or QA purposes, but their value after | ||
2480 | analysis is minimal. | ||
2481 | \layout Standard | ||
2482 | |||
2483 | It is wasteful and potentially confusing to permit this internal test data | ||
2484 | to clutter the database, and a solution to the problem is the proper use | ||
2485 | of the | ||
2486 | \noun on | ||
2487 | LogSQLMachineID | ||
2488 | \noun default | ||
2489 | directive. | ||
2490 | Assume a scenario where the production webservers have IDs like | ||
2491 | \begin_inset Quotes eld | ||
2492 | \end_inset | ||
2493 | |||
2494 | web01, | ||
2495 | \begin_inset Quotes erd | ||
2496 | \end_inset | ||
2497 | |||
2498 | |||
2499 | \begin_inset Quotes eld | ||
2500 | \end_inset | ||
2501 | |||
2502 | web02, | ||
2503 | \begin_inset Quotes erd | ||
2504 | \end_inset | ||
2505 | |||
2506 | and so on -- and the test webservers have IDs like | ||
2507 | \begin_inset Quotes eld | ||
2508 | \end_inset | ||
2509 | |||
2510 | test01, | ||
2511 | \begin_inset Quotes erd | ||
2512 | \end_inset | ||
2513 | |||
2514 | |||
2515 | \begin_inset Quotes eld | ||
2516 | \end_inset | ||
2517 | |||
2518 | test02, | ||
2519 | \begin_inset Quotes erd | ||
2520 | \end_inset | ||
2521 | |||
2522 | etc. | ||
2523 | Because entries in the log database are distinguished by their source machine, | ||
2524 | an administrator may purge unneeded test data from the access log as follows: | ||
2525 | \layout LyX-Code | ||
2526 | |||
2527 | delete from access_log where machine_id like 'test%'; | ||
2528 | \layout Subsubsection | ||
2529 | |||
2530 | |||
2531 | \begin_inset LatexCommand \label{sub:DelayedIns} | ||
2532 | |||
2533 | \end_inset | ||
2534 | |||
2402 | Optimizing for a busy database | 2535 | Optimizing for a busy database |
2403 | \layout Standard | 2536 | \layout Standard |
2404 | 2537 | ||
2405 | A busy MySQL database will have SELECT statements running concurrently with | 2538 | A busy MySQL database will have SELECT statements running concurrently with |
2406 | INSERT and UPDATE statements. | 2539 | INSERT and UPDATE statements. |
2407 | A long-running SELECT can block INSERTs, therefore will block mod_log_sql. | 2540 | A long-running SELECT can block INSERTs, therefore will block mod_log_sql. |
2408 | This can be solved by compiling mod_log_sql for | 2541 | This may be solved by compiling mod_log_sql for |
2409 | \begin_inset Quotes eld | 2542 | \begin_inset Quotes eld |
2410 | \end_inset | 2543 | \end_inset |
2411 | 2544 | ||
@@ -2454,6 +2587,8 @@ There is additional overhead for the server to handle a separate thread | |||
2454 | for each table on which you use INSERT DELAYED. | 2587 | for each table on which you use INSERT DELAYED. |
2455 | \layout Standard | 2588 | \layout Standard |
2456 | 2589 | ||
2590 | |||
2591 | \series bold | ||
2457 | The MySQL documentation concludes, | 2592 | The MySQL documentation concludes, |
2458 | \begin_inset Quotes eld | 2593 | \begin_inset Quotes eld |
2459 | \end_inset | 2594 | \end_inset |
@@ -2463,7 +2598,15 @@ This means that you should only use INSERT DELAYED when you are really sure | |||
2463 | \begin_inset Quotes erd | 2598 | \begin_inset Quotes erd |
2464 | \end_inset | 2599 | \end_inset |
2465 | 2600 | ||
2601 | Furthermore, the current state of error return from a failed INSERT DELAYED | ||
2602 | seems to be in flux, and may behave in unpredictable ways between different | ||
2603 | MySQL versions. | ||
2604 | See section | ||
2605 | \begin_inset LatexCommand \ref{sub:DelayedInsFAQ} | ||
2606 | |||
2607 | \end_inset | ||
2466 | 2608 | ||
2609 | in the FAQ -- you have been warned. | ||
2467 | \layout Standard | 2610 | \layout Standard |
2468 | 2611 | ||
2469 | If you are experiencing issues which could be solved by delayed inserts, | 2612 | If you are experiencing issues which could be solved by delayed inserts, |
@@ -2499,246 +2642,297 @@ context | |||
2499 | listed with each entry informs you of this. | 2642 | listed with each entry informs you of this. |
2500 | \layout Subsubsection | 2643 | \layout Subsubsection |
2501 | 2644 | ||
2502 | LogSQLDatabase | 2645 | LogSQLCookieLogTable |
2503 | \layout LyX-Code | 2646 | \layout LyX-Code |
2504 | 2647 | ||
2505 | 2648 | Syntax: LogSQLCookieLogTable table-name | |
2506 | \series bold | ||
2507 | MANDATORY | ||
2508 | \layout LyX-Code | 2649 | \layout LyX-Code |
2509 | 2650 | ||
2510 | Syntax: LogSQLDatabase database | 2651 | Example: LogSQLCookieLogTable cookie_log |
2511 | \layout LyX-Code | 2652 | \layout LyX-Code |
2512 | 2653 | ||
2513 | Example: LogSQLDatabase loggingdb | 2654 | Default: cookies |
2514 | \layout LyX-Code | 2655 | \layout LyX-Code |
2515 | 2656 | ||
2516 | Context: main server config | 2657 | Context: virtual host |
2517 | \layout Quote | 2658 | \layout Standard |
2518 | 2659 | ||
2519 | Defines the database that is used for logging. | 2660 | Defines which table is used for logging of cookies. |
2520 | 2661 | Working in conjunction with | |
2662 | \noun on | ||
2663 | LogSQLWhichCookies | ||
2664 | \noun default | ||
2665 | , you can log many of each request's associated cookies to a separate table. | ||
2666 | For meaningful data retrieval the cookie table is keyed to the access table | ||
2667 | by the unique request ID supplied by the standard Apache module mod_unique_id. | ||
2668 | \layout Standard | ||
2669 | |||
2670 | Note that you must create the table (see create-tables.sql, included in the | ||
2671 | package), or | ||
2672 | \noun on | ||
2673 | LogSQLCreateTables | ||
2674 | \noun default | ||
2675 | must be set to | ||
2521 | \begin_inset Quotes eld | 2676 | \begin_inset Quotes eld |
2522 | \end_inset | 2677 | \end_inset |
2523 | 2678 | ||
2524 | database | 2679 | on |
2525 | \begin_inset Quotes erd | 2680 | \begin_inset Quotes erd |
2526 | \end_inset | 2681 | \end_inset |
2527 | 2682 | ||
2528 | must be a valid db on the MySQL host defined in | 2683 | . |
2684 | \layout Subsubsection | ||
2685 | |||
2686 | LogSQLCreateTables | ||
2687 | \layout LyX-Code | ||
2688 | |||
2689 | Syntax: LogSQLCreateTables flag | ||
2690 | \layout LyX-Code | ||
2691 | |||
2692 | Example: LogSQLCreateTables On | ||
2693 | \layout LyX-Code | ||
2694 | |||
2695 | Default: Off | ||
2696 | \layout LyX-Code | ||
2697 | |||
2698 | Context: main server config | ||
2699 | \layout Standard | ||
2700 | |||
2701 | mod_log_sql has the ability to create its tables on-the-fly. | ||
2702 | The advantage to this is convenience: you don't have to execute any SQL | ||
2703 | by hand to prepare the table. | ||
2704 | This is especially helpful for people with lots of virtual hosts (who should | ||
2705 | also see the | ||
2706 | \noun on | ||
2707 | LogSQLMassVirtualHosting | ||
2708 | \noun default | ||
2709 | directive). | ||
2710 | \layout Standard | ||
2711 | |||
2712 | There is a slight disadvantage: if you wish to activate this feature, then | ||
2713 | the userid specified in | ||
2529 | \noun on | 2714 | \noun on |
2530 | LogSQLLoginInfo | 2715 | LogSQLLoginInfo |
2531 | \noun default | 2716 | \noun default |
2717 | must have CREATE privileges on the database. | ||
2718 | In an absolutely paranoid, locked-down situation you may only want to grant | ||
2719 | your mod_log_sql user INSERT privileges on the database; in that situation | ||
2720 | you are unable to take advantage of | ||
2721 | \noun on | ||
2722 | LogSQLCreateTables | ||
2723 | \noun default | ||
2532 | . | 2724 | . |
2533 | 2725 | But most people -- even the very security-conscious -- will find that granting | |
2534 | \layout Quote | 2726 | CREATE on the logging database is reasonable. |
2727 | \layout Standard | ||
2535 | 2728 | ||
2536 | This is defined only once in the httpd.conf file. | 2729 | This is defined only once in the httpd.conf file. |
2537 | \layout Subsubsection | 2730 | \layout Subsubsection |
2538 | 2731 | ||
2539 | LogSQLLoginInfo | 2732 | LogSQLDatabase |
2540 | \layout LyX-Code | 2733 | \layout LyX-Code |
2541 | 2734 | ||
2542 | 2735 | ||
2543 | \series bold | 2736 | \series bold |
2544 | MANDATORY | 2737 | MANDATORY |
2545 | \series default | ||
2546 | |||
2547 | \layout LyX-Code | 2738 | \layout LyX-Code |
2548 | 2739 | ||
2549 | Syntax: LogSQLLoginInfo host user password | 2740 | Syntax: LogSQLDatabase database |
2550 | \layout LyX-Code | 2741 | \layout LyX-Code |
2551 | 2742 | ||
2552 | Example: LogSQLLoginInfo foobar.baz.com logwriter passw0rd | 2743 | Example: LogSQLDatabase loggingdb |
2553 | \layout LyX-Code | 2744 | \layout LyX-Code |
2554 | 2745 | ||
2555 | Context: main server config | 2746 | Context: main server config |
2556 | \layout Quote | 2747 | \layout Standard |
2557 | |||
2558 | Defines the general parameters of the MySQL host to which you will be logging. | ||
2559 | |||
2560 | \begin_inset Quotes eld | ||
2561 | \end_inset | ||
2562 | |||
2563 | host | ||
2564 | \begin_inset Quotes erd | ||
2565 | \end_inset | ||
2566 | 2748 | ||
2567 | is the hostname or IP address of the MySQL machine. | 2749 | Defines the database that is used for logging. |
2568 | 2750 | ||
2569 | \begin_inset Quotes eld | 2751 | \begin_inset Quotes eld |
2570 | \end_inset | 2752 | \end_inset |
2571 | 2753 | ||
2572 | user | 2754 | database |
2573 | \begin_inset Quotes erd | 2755 | \begin_inset Quotes erd |
2574 | \end_inset | 2756 | \end_inset |
2575 | 2757 | ||
2576 | is the MySQL userid (not a Unix userid!) with INSERT privileges on the | 2758 | must be a valid db on the MySQL host defined in |
2577 | table defined in | ||
2578 | \noun on | 2759 | \noun on |
2579 | LogSQLTransferLogTable | 2760 | LogSQLLoginInfo |
2580 | \noun default | 2761 | \noun default |
2581 | . | 2762 | . |
2582 | 2763 | ||
2583 | \begin_inset Quotes eld | 2764 | \layout Standard |
2584 | \end_inset | ||
2585 | |||
2586 | password | ||
2587 | \begin_inset Quotes erd | ||
2588 | \end_inset | ||
2589 | |||
2590 | is that user's password. | ||
2591 | |||
2592 | \layout Quote | ||
2593 | 2765 | ||
2594 | This is defined only once in the httpd.conf file. | 2766 | This is defined only once in the httpd.conf file. |
2595 | \layout Subsubsection | 2767 | \layout Subsubsection |
2596 | 2768 | ||
2597 | LogSQLTCPPort | 2769 | LogSQLForcePreserve |
2598 | \layout LyX-Code | 2770 | \layout LyX-Code |
2599 | 2771 | ||
2600 | Syntax: LogSQLTCPPort portnumber | 2772 | Syntax: LogSQLForcePreserve Flag |
2601 | \layout LyX-Code | 2773 | \layout LyX-Code |
2602 | 2774 | ||
2603 | Example: LogSQLTCPPort 3309 | 2775 | Example: LogSQLPreserveFile on |
2604 | \layout LyX-Code | 2776 | \layout LyX-Code |
2605 | 2777 | ||
2606 | Default: 3306 | 2778 | Default: off |
2607 | \layout LyX-Code | 2779 | \layout LyX-Code |
2608 | 2780 | ||
2609 | Context: main server config | 2781 | Context: main server config |
2610 | \layout Quote | 2782 | \layout Standard |
2611 | 2783 | ||
2612 | Your database may listen on a different port than the default. | 2784 | You may need to perform debugging on your database and specifically want |
2613 | If so, use this directive to instruct the module which port to use. | 2785 | mod_log_sql to make no attempts to log to it. |
2614 | This directive only applies if the database is on a different machine connected | 2786 | This directive instructs the module to send all its log entries directly |
2615 | via TCP/IP. | 2787 | to the preserve file and to make no database INSERT attempts. |
2616 | \layout Quote | 2788 | \layout Standard |
2789 | |||
2790 | This is presumably a directive for temporary use only; it could be dangerous | ||
2791 | if you set it and forget it, as all your entries will simply pile up in | ||
2792 | the preserve file. | ||
2793 | \layout Standard | ||
2617 | 2794 | ||
2618 | This is defined only once in the httpd.conf file. | 2795 | This is defined only once in the httpd.conf file. |
2619 | \layout Subsubsection | 2796 | \layout Subsubsection |
2620 | 2797 | ||
2621 | LogSQLSocketFile | 2798 | LogSQLHeadersInLogTable |
2622 | \layout LyX-Code | 2799 | \layout LyX-Code |
2623 | 2800 | ||
2624 | Syntax: LogSQLSocketFile filename | 2801 | Syntax: LogSQLHeadersInLogTable table-name |
2625 | \layout LyX-Code | 2802 | \layout LyX-Code |
2626 | 2803 | ||
2627 | Example: LogSQLSocketFile /tmp/mysql.sock | 2804 | Example: LogSQLHeadersInLogTable headers |
2628 | \layout LyX-Code | 2805 | \layout LyX-Code |
2629 | 2806 | ||
2630 | Default: /var/lib/mysql/mysql.sock | 2807 | Default: headers_in |
2631 | \layout LyX-Code | 2808 | \layout LyX-Code |
2632 | 2809 | ||
2633 | Context: main server config | 2810 | Context: virtual host |
2634 | \layout Quote | 2811 | \layout Standard |
2635 | 2812 | ||
2636 | At Apache runtime you can specify the MySQL socket file to use. | 2813 | Defines which table is used for logging of inbound headers. |
2637 | Set this once in your main server config to override the default value. | 2814 | Working in conjunction with |
2638 | This value is irrelevant if your database resides on a separate machine. | 2815 | \noun on |
2639 | \layout Quote | 2816 | LogSQLWhichHeadersIn |
2817 | \noun default | ||
2818 | , you can log many of each request's associated headers to a separate table. | ||
2819 | For meaningful data retrieval the headers table is keyed to the access | ||
2820 | table by the unique request ID supplied by the standard Apache module mod_uniqu | ||
2821 | e_id. | ||
2822 | \layout Standard | ||
2640 | 2823 | ||
2641 | mod_log_sql will automatically employ the socket for db communications if | 2824 | Note that you must create the table (see create-tables.sql, included in the |
2642 | the database resides on the local host. | 2825 | package), or |
2643 | If the db resides on a separate host the module will automatically use | 2826 | \noun on |
2644 | TCP/IP. | 2827 | LogSQLCreateTables |
2645 | This is a function of the MySQL API and is not user-configurable. | 2828 | \noun default |
2646 | \layout Quote | 2829 | must be set to |
2830 | \begin_inset Quotes eld | ||
2831 | \end_inset | ||
2647 | 2832 | ||
2648 | This is defined only once in the httpd.conf file. | 2833 | on |
2834 | \begin_inset Quotes erd | ||
2835 | \end_inset | ||
2836 | |||
2837 | . | ||
2649 | \layout Subsubsection | 2838 | \layout Subsubsection |
2650 | 2839 | ||
2651 | LogSQLPreserveFile | 2840 | LogSQLHeadersOutLogTable |
2652 | \layout LyX-Code | 2841 | \layout LyX-Code |
2653 | 2842 | ||
2654 | Syntax: LogSQLPreserveFile filename | 2843 | Syntax: LogSQLHeadersOutLogTable table-name |
2655 | \layout LyX-Code | 2844 | \layout LyX-Code |
2656 | 2845 | ||
2657 | Example: LogSQLPreserveFile offline-preserve | 2846 | Example: LogSQLHeadersOutLogTable headers |
2658 | \layout LyX-Code | 2847 | \layout LyX-Code |
2659 | 2848 | ||
2660 | Default: /tmp/sql-preserve | 2849 | Default: headers_out |
2661 | \layout LyX-Code | 2850 | \layout LyX-Code |
2662 | 2851 | ||
2663 | Context: virtual host | 2852 | Context: virtual host |
2664 | \layout Quote | 2853 | \layout Standard |
2665 | |||
2666 | mod_log_sql writes queries to this local preserve file in the event that | ||
2667 | it cannot reach the database, and thus ensures that your high-availability | ||
2668 | web frontend does not lose logs during a temporary database outage. | ||
2669 | This could happen for a number of reasons: the database goes offline, the | ||
2670 | network breaks, etc. | ||
2671 | You will not lose entries since the module has this backup. | ||
2672 | The file consists of a series of SQL statements that can be imported into | ||
2673 | your database at your convenience; furthermore, because the SQL queries | ||
2674 | contain the access timestamps you do not need to worry about out-of-order | ||
2675 | data after the import, which is done in a simple manner: | ||
2676 | \layout LyX-Code | ||
2677 | |||
2678 | # mysql -uadminuser -p mydbname < /tmp/sql-preserve | ||
2679 | \layout Quote | ||
2680 | 2854 | ||
2681 | If you do not define | 2855 | Defines which table is used for logging of outbound headers. |
2682 | \noun on | 2856 | Working in conjunction with |
2683 | LogSQLPreserveFile | ||
2684 | \noun default | ||
2685 | then all virtual servers will log to the same default preserve file (/tmp/sql-p | ||
2686 | reserve). | ||
2687 | You can redefine this on a virtual-host basis in order to segregate your | ||
2688 | preserve files if you desire. | ||
2689 | Note that segregation is not usually necessary, as the SQL statements that | ||
2690 | are written to the preserve file already distinguish between different | ||
2691 | virtual hosts if you include the 'v' character in your | ||
2692 | \noun on | 2857 | \noun on |
2693 | LogSQLTransferLogFormat | 2858 | LogSQLWhichHeadersOut |
2694 | \noun default | 2859 | \noun default |
2695 | directive. | 2860 | , you can log many of each request's associated headers to a separate table. |
2696 | It is only necessary to segregate preserve-files by virualhost if you also | 2861 | For meaningful data retrieval the headers table is keyed to the access |
2697 | segregate access logs by virtualhost. | 2862 | table by the unique request ID supplied by the standard Apache module mod_uniqu |
2698 | \layout Quote | 2863 | e_id. |
2864 | \layout Standard | ||
2699 | 2865 | ||
2700 | The module will log to Apache's | 2866 | Note that you must create the table (see create-tables.sql, included in the |
2867 | package), or | ||
2701 | \noun on | 2868 | \noun on |
2702 | ErrorLog | 2869 | LogSQLCreateTables |
2703 | \noun default | 2870 | \noun default |
2704 | when it notices a database outage, and upon database return. | 2871 | must be set to |
2705 | You will therefore know when the preserve file is being used, although | 2872 | \begin_inset Quotes eld |
2706 | it is your responsibility to import the file. | 2873 | \end_inset |
2707 | \layout Quote | ||
2708 | 2874 | ||
2709 | The file does not need to be created in advance. | 2875 | on |
2710 | It is safe to remove or rename the file without interrupting Apache, as | 2876 | \begin_inset Quotes erd |
2711 | the module closes the filehandle immediately after completing the write. | 2877 | \end_inset |
2712 | The file is created with the user & group ID of the running Apache process | 2878 | |
2713 | (e.g. | 2879 | . |
2714 | 'nobody' on many Linux distributions). | ||
2715 | \layout Subsubsection | 2880 | \layout Subsubsection |
2716 | 2881 | ||
2717 | LogSQLForcePreserve | 2882 | LogSQLLoginInfo |
2718 | \layout LyX-Code | 2883 | \layout LyX-Code |
2719 | 2884 | ||
2720 | Syntax: LogSQLForcePreserve Flag | 2885 | |
2886 | \series bold | ||
2887 | MANDATORY | ||
2888 | \series default | ||
2889 | |||
2721 | \layout LyX-Code | 2890 | \layout LyX-Code |
2722 | 2891 | ||
2723 | Example: LogSQLPreserveFile on | 2892 | Syntax: LogSQLLoginInfo host user password |
2724 | \layout LyX-Code | 2893 | \layout LyX-Code |
2725 | 2894 | ||
2726 | Default: off | 2895 | Example: LogSQLLoginInfo foobar.baz.com logwriter passw0rd |
2727 | \layout LyX-Code | 2896 | \layout LyX-Code |
2728 | 2897 | ||
2729 | Context: main server config | 2898 | Context: main server config |
2730 | \layout Quote | 2899 | \layout Standard |
2731 | 2900 | ||
2732 | You may need to perform debugging on your database and specifically want | 2901 | Defines the general parameters of the MySQL host to which you will be logging. |
2733 | mod_log_sql to make no attempts to log to it. | 2902 | |
2734 | This directive instructs the module to send all its log entries directly | 2903 | \begin_inset Quotes eld |
2735 | to the preserve file and to make no database INSERT attempts. | 2904 | \end_inset |
2736 | \layout Quote | ||
2737 | 2905 | ||
2738 | This is presumably a directive for temporary use only; it could be dangerous | 2906 | host |
2739 | if you set it and forget it, as all your entries will simply pile up in | 2907 | \begin_inset Quotes erd |
2740 | the preserve file. | 2908 | \end_inset |
2741 | \layout Quote | 2909 | |
2910 | is the hostname or IP address of the MySQL machine. | ||
2911 | |||
2912 | \begin_inset Quotes eld | ||
2913 | \end_inset | ||
2914 | |||
2915 | user | ||
2916 | \begin_inset Quotes erd | ||
2917 | \end_inset | ||
2918 | |||
2919 | is the MySQL userid (not a Unix userid!) with INSERT privileges on the | ||
2920 | table defined in | ||
2921 | \noun on | ||
2922 | LogSQLTransferLogTable | ||
2923 | \noun default | ||
2924 | . | ||
2925 | |||
2926 | \begin_inset Quotes eld | ||
2927 | \end_inset | ||
2928 | |||
2929 | password | ||
2930 | \begin_inset Quotes erd | ||
2931 | \end_inset | ||
2932 | |||
2933 | is that user's password. | ||
2934 | |||
2935 | \layout Standard | ||
2742 | 2936 | ||
2743 | This is defined only once in the httpd.conf file. | 2937 | This is defined only once in the httpd.conf file. |
2744 | \layout Subsubsection | 2938 | \layout Subsubsection |
@@ -2753,7 +2947,7 @@ Example: LogSQLMachineID web01 | |||
2753 | \layout LyX-Code | 2947 | \layout LyX-Code |
2754 | 2948 | ||
2755 | Context: main server config | 2949 | Context: main server config |
2756 | \layout Quote | 2950 | \layout Standard |
2757 | 2951 | ||
2758 | If you have a farm of webservers then you may wish to know which particular | 2952 | If you have a farm of webservers then you may wish to know which particular |
2759 | machine made each entry; this is useful for analyzing your loadbalancing | 2953 | machine made each entry; this is useful for analyzing your loadbalancing |
@@ -2792,53 +2986,7 @@ LogSQLMachineID | |||
2792 | \end_inset | 2986 | \end_inset |
2793 | 2987 | ||
2794 | etc. | 2988 | etc. |
2795 | \layout Quote | 2989 | \layout Standard |
2796 | |||
2797 | This is defined only once in the httpd.conf file. | ||
2798 | \layout Subsubsection | ||
2799 | |||
2800 | LogSQLCreateTables | ||
2801 | \layout LyX-Code | ||
2802 | |||
2803 | Syntax: LogSQLCreateTables flag | ||
2804 | \layout LyX-Code | ||
2805 | |||
2806 | Example: LogSQLCreateTables On | ||
2807 | \layout LyX-Code | ||
2808 | |||
2809 | Default: Off | ||
2810 | \layout LyX-Code | ||
2811 | |||
2812 | Context: main server config | ||
2813 | \layout Quote | ||
2814 | |||
2815 | mod_log_sql has the ability to create its tables on-the-fly. | ||
2816 | The advantage to this is convenience: you don't have to execute any SQL | ||
2817 | by hand to prepare the table. | ||
2818 | This is especially helpful for people with lots of virtual hosts (who should | ||
2819 | also see the | ||
2820 | \noun on | ||
2821 | LogSQLMassVirtualHosting | ||
2822 | \noun default | ||
2823 | directive). | ||
2824 | \layout Quote | ||
2825 | |||
2826 | There is a slight disadvantage: if you wish to activate this feature, then | ||
2827 | the userid specified in | ||
2828 | \noun on | ||
2829 | LogSQLLoginInfo | ||
2830 | \noun default | ||
2831 | must have CREATE privileges on the database. | ||
2832 | In an absolutely paranoid, locked-down situation you may only want to grant | ||
2833 | your mod_log_sql user INSERT privileges on the database; in that situation | ||
2834 | you are unable to take advantage of | ||
2835 | \noun on | ||
2836 | LogSQLCreateTables | ||
2837 | \noun default | ||
2838 | . | ||
2839 | But most people -- even the very security-conscious -- will find that granting | ||
2840 | CREATE on the logging database is reasonable. | ||
2841 | \layout Quote | ||
2842 | 2990 | ||
2843 | This is defined only once in the httpd.conf file. | 2991 | This is defined only once in the httpd.conf file. |
2844 | \layout Subsubsection | 2992 | \layout Subsubsection |
@@ -2856,7 +3004,7 @@ Default: Off | |||
2856 | \layout LyX-Code | 3004 | \layout LyX-Code |
2857 | 3005 | ||
2858 | Context: main server config | 3006 | Context: main server config |
2859 | \layout Quote | 3007 | \layout Standard |
2860 | 3008 | ||
2861 | If you administer a site hosting many, many virtual hosts then this option | 3009 | If you administer a site hosting many, many virtual hosts then this option |
2862 | will appeal to you. | 3010 | will appeal to you. |
@@ -2865,7 +3013,6 @@ If you administer a site hosting many, many virtual hosts then this option | |||
2865 | LogSQLMassVirtualHosting | 3013 | LogSQLMassVirtualHosting |
2866 | \noun default | 3014 | \noun default |
2867 | then several things happen: | 3015 | then several things happen: |
2868 | \begin_deeper | ||
2869 | \layout Itemize | 3016 | \layout Itemize |
2870 | 3017 | ||
2871 | the on-the-fly table creation feature is activated automatically | 3018 | the on-the-fly table creation feature is activated automatically |
@@ -2881,8 +3028,7 @@ which, in turn, means that each virtual host logs to its own segregated | |||
2881 | Because there is no data shared between virtual servers you can grant your | 3028 | Because there is no data shared between virtual servers you can grant your |
2882 | users access to the tables they need; they will be unable to view others' | 3029 | users access to the tables they need; they will be unable to view others' |
2883 | data. | 3030 | data. |
2884 | \end_deeper | 3031 | \layout Standard |
2885 | \layout Quote | ||
2886 | 3032 | ||
2887 | This is a huge boost in convenience for sites with many virtual servers. | 3033 | This is a huge boost in convenience for sites with many virtual servers. |
2888 | Activating | 3034 | Activating |
@@ -2891,64 +3037,239 @@ LogSQLMassVirtualHosting | |||
2891 | \noun default | 3037 | \noun default |
2892 | obviates the need to create every virtual server's table and provides more | 3038 | obviates the need to create every virtual server's table and provides more |
2893 | granular security possibilities. | 3039 | granular security possibilities. |
2894 | \layout Quote | 3040 | \layout Standard |
3041 | |||
3042 | You are advised to investigate the use of Apache's | ||
3043 | \noun on | ||
3044 | UseCanonicalName On | ||
3045 | \noun default | ||
3046 | directive with this directive in order to ensure that each virtual host | ||
3047 | maps to one table namespace. | ||
3048 | \layout Standard | ||
2895 | 3049 | ||
2896 | This is defined only once in the httpd.conf file. | 3050 | This is defined only once in the httpd.conf file. |
3051 | |||
2897 | \layout Subsubsection | 3052 | \layout Subsubsection |
2898 | 3053 | ||
2899 | LogSQLTransferLogTable | 3054 | LogSQLNotesLogTable |
3055 | \layout LyX-Code | ||
3056 | |||
3057 | Syntax: LogSQLNotesLogTable table-name | ||
2900 | \layout LyX-Code | 3058 | \layout LyX-Code |
2901 | 3059 | ||
3060 | Example: LogSQLNotesLogTable notes_log | ||
3061 | \layout LyX-Code | ||
2902 | 3062 | ||
2903 | \series bold | 3063 | Default: notes |
2904 | MANDATORY (unless | 3064 | \layout LyX-Code |
3065 | |||
3066 | Context: virtual host | ||
3067 | \layout Standard | ||
3068 | |||
3069 | Defines which table is used for logging of notes. | ||
3070 | Working in conjunction with | ||
2905 | \noun on | 3071 | \noun on |
2906 | LogSQLMassVirtualHosting | 3072 | LogSQLWhichNotes |
2907 | \noun default | 3073 | \noun default |
2908 | is | 3074 | , you can log many of each request's associated notes to a separate table. |
2909 | \begin_inset Quotes eld | 3075 | For meaningful data retrieval the notes table is keyed to the access table |
2910 | \end_inset | 3076 | by the unique request ID supplied by the standard Apache module mod_unique_id. |
3077 | \layout Standard | ||
2911 | 3078 | ||
2912 | on | 3079 | Note that you must create the table (see create-tables.sql, included in the |
2913 | \begin_inset Quotes erd | 3080 | package), or |
2914 | \end_inset | 3081 | \noun on |
3082 | LogSQLCreateTables | ||
3083 | \noun default | ||
3084 | must be set to ``on''. | ||
3085 | |||
3086 | \layout Subsubsection | ||
2915 | 3087 | ||
2916 | ) | 3088 | LogSQLPreserveFile |
2917 | \layout LyX-Code | 3089 | \layout LyX-Code |
2918 | 3090 | ||
2919 | Syntax: LogSQLTransferLogTable table-name | 3091 | Syntax: LogSQLPreserveFile filename |
2920 | \layout LyX-Code | 3092 | \layout LyX-Code |
2921 | 3093 | ||
2922 | Example: LogSQLTransferLogTable access_log_table | 3094 | Example: LogSQLPreserveFile offline-preserve |
3095 | \layout LyX-Code | ||
3096 | |||
3097 | Default: /tmp/sql-preserve | ||
2923 | \layout LyX-Code | 3098 | \layout LyX-Code |
2924 | 3099 | ||
2925 | Context: virtual host | 3100 | Context: virtual host |
2926 | \layout Quote | 3101 | \layout Standard |
2927 | 3102 | ||
2928 | Defines which table is used for logging of Apache's transfers; this is analogous | 3103 | mod_log_sql writes queries to this local preserve file in the event that |
2929 | to Apache's TransferLog directive. | 3104 | it cannot reach the database, and thus ensures that your high-availability |
2930 | table-name must be a valid table within the database defined in | 3105 | web frontend does not lose logs during a temporary database outage. |
3106 | This could happen for a number of reasons: the database goes offline, the | ||
3107 | network breaks, etc. | ||
3108 | You will not lose entries since the module has this backup. | ||
3109 | The file consists of a series of SQL statements that can be imported into | ||
3110 | your database at your convenience; furthermore, because the SQL queries | ||
3111 | contain the access timestamps you do not need to worry about out-of-order | ||
3112 | data after the import, which is done in a simple manner: | ||
3113 | \layout LyX-Code | ||
3114 | |||
3115 | # mysql -uadminuser -p mydbname < /tmp/sql-preserve | ||
3116 | \layout Standard | ||
3117 | |||
3118 | If you do not define | ||
2931 | \noun on | 3119 | \noun on |
2932 | LogSQLDatabase | 3120 | LogSQLPreserveFile |
2933 | \noun default | 3121 | \noun default |
2934 | . | 3122 | then all virtual servers will log to the same default preserve file (/tmp/sql-p |
2935 | \layout Quote | 3123 | reserve). |
3124 | You can redefine this on a virtual-host basis in order to segregate your | ||
3125 | preserve files if you desire. | ||
3126 | Note that segregation is not usually necessary, as the SQL statements that | ||
3127 | are written to the preserve file already distinguish between different | ||
3128 | virtual hosts if you include the 'v' character in your | ||
3129 | \noun on | ||
3130 | LogSQLTransferLogFormat | ||
3131 | \noun default | ||
3132 | directive. | ||
3133 | It is only necessary to segregate preserve-files by virualhost if you also | ||
3134 | segregate access logs by virtualhost. | ||
3135 | \layout Standard | ||
2936 | 3136 | ||
2937 | This directive is not necessary if you declare | 3137 | The module will log to Apache's |
2938 | \noun on | 3138 | \noun on |
2939 | LogSQLMassVirtualHosting On | 3139 | ErrorLog |
2940 | \noun default | 3140 | \noun default |
2941 | , since that directive activates dynamically-named tables. | 3141 | when it notices a database outage, and upon database return. |
2942 | If you attempt to use | 3142 | You will therefore know when the preserve file is being used, although |
3143 | it is your responsibility to import the file. | ||
3144 | \layout Standard | ||
3145 | |||
3146 | The file does not need to be created in advance. | ||
3147 | It is safe to remove or rename the file without interrupting Apache, as | ||
3148 | the module closes the filehandle immediately after completing the write. | ||
3149 | The file is created with the user & group ID of the running Apache process | ||
3150 | (e.g. | ||
3151 | 'nobody' on many Linux distributions). | ||
3152 | \layout Subsubsection | ||
3153 | |||
3154 | LogSQLRemhostIgnore | ||
3155 | \layout LyX-Code | ||
3156 | |||
3157 | Syntax: LogSQLRemhostIgnore host1 host2 host3 ... | ||
3158 | hostN | ||
3159 | \layout LyX-Code | ||
3160 | |||
3161 | Example: LogSQLRemhostIgnore localnet.com | ||
3162 | \layout LyX-Code | ||
3163 | |||
3164 | Context: virtual host | ||
3165 | \layout Standard | ||
3166 | |||
3167 | Lists a series of strings that, if present in the REMOTE_HOST, will cause | ||
3168 | that request to | ||
3169 | \series bold | ||
3170 | not | ||
3171 | \series default | ||
3172 | be logged. | ||
3173 | This directive is useful for cutting down on log clutter when you are certain | ||
3174 | that you want to ignore requests from certain hosts, such as your own internal | ||
3175 | network machines. | ||
3176 | See section | ||
3177 | \begin_inset LatexCommand \ref{sub:Ignore} | ||
3178 | |||
3179 | \end_inset | ||
3180 | |||
3181 | for some tips for using this directive. | ||
3182 | \layout Standard | ||
3183 | |||
3184 | Each string is separated by a space, and no regular expressions or globbing | ||
3185 | are allowed. | ||
3186 | Each string is evaluated as a substring of the REMOTE_HOST using strstr(). | ||
3187 | The comparison is case sensitive. | ||
3188 | \layout Subsubsection | ||
3189 | |||
3190 | LogSQLRequestAccept | ||
3191 | \layout LyX-Code | ||
3192 | |||
3193 | Syntax: LogSQLRequestAccept req1 req2 req3 ... | ||
3194 | reqN | ||
3195 | \layout LyX-Code | ||
3196 | |||
3197 | Example: LogSQLRequestAccept .html .php .jpg | ||
3198 | \layout LyX-Code | ||
3199 | |||
3200 | Default: if not specified, all requests are | ||
3201 | \begin_inset Quotes eld | ||
3202 | \end_inset | ||
3203 | |||
3204 | accepted | ||
3205 | \begin_inset Quotes erd | ||
3206 | \end_inset | ||
3207 | |||
3208 | |||
3209 | \layout LyX-Code | ||
3210 | |||
3211 | Context: virtual host | ||
3212 | \layout Standard | ||
3213 | |||
3214 | Lists a series of strings that, if present in the URI, will permit that | ||
3215 | request to be | ||
3216 | \series bold | ||
3217 | |||
3218 | \series default | ||
3219 | considered for logging (depending on additional filtering by the | ||
3220 | \begin_inset Quotes eld | ||
3221 | \end_inset | ||
3222 | |||
3223 | ignore | ||
3224 | \begin_inset Quotes erd | ||
3225 | \end_inset | ||
3226 | |||
3227 | directives). | ||
3228 | Any request that fails to match one of the | ||
2943 | \noun on | 3229 | \noun on |
2944 | LogSQLTransferLogTable | 3230 | LogSQLRequestAccept |
2945 | \noun default | 3231 | \noun default |
2946 | at the same time a warning will be logged and it will be ignored, since | 3232 | entries will be discarded. |
3233 | \layout Standard | ||
3234 | |||
3235 | This directive is useful for cutting down on log clutter when you are certain | ||
3236 | that you only want to log certain kinds of requests, and just blanket-ignore | ||
3237 | everything else. | ||
3238 | See section | ||
3239 | \begin_inset LatexCommand \ref{sub:Ignore} | ||
3240 | |||
3241 | \end_inset | ||
3242 | |||
3243 | for some tips for using this directive. | ||
3244 | \layout Standard | ||
3245 | |||
3246 | Each string is separated by a space, and no regular expressions or globbing | ||
3247 | are allowed. | ||
3248 | Each string is evaluated as a substring of the URI using strstr(). | ||
3249 | The comparison is case sensitive. | ||
3250 | \layout Standard | ||
3251 | |||
3252 | This directive is completely optional. | ||
3253 | It is more general than | ||
3254 | \noun on | ||
3255 | LogSQLRequestIgnore | ||
3256 | \noun default | ||
3257 | and | ||
3258 | \noun on | ||
2947 | 3259 | ||
3260 | \noun default | ||
3261 | is evaluated before | ||
2948 | \noun on | 3262 | \noun on |
2949 | LogSQLMassVirtualHosting | 3263 | LogSQLRequestIgnore |
2950 | \noun default | 3264 | \noun default |
2951 | takes priority. | 3265 | . |
3266 | If this directive is not used, | ||
3267 | \series bold | ||
3268 | all | ||
3269 | \series default | ||
3270 | requests are accepted and passed on to the other filtering directives. | ||
3271 | Therefore, only use this directive if you have a specific reason to do | ||
3272 | so. | ||
2952 | \layout Subsubsection | 3273 | \layout Subsubsection |
2953 | 3274 | ||
2954 | LogSQLRequestIgnore | 3275 | LogSQLRequestIgnore |
@@ -2962,7 +3283,7 @@ Example: LogSQLRequestIgnore root.exe cmd.exe default.ida favicon.ico | |||
2962 | \layout LyX-Code | 3283 | \layout LyX-Code |
2963 | 3284 | ||
2964 | Context: virtual host | 3285 | Context: virtual host |
2965 | \layout Quote | 3286 | \layout Standard |
2966 | 3287 | ||
2967 | Lists a series of strings that, if present in the URI, will cause that request | 3288 | Lists a series of strings that, if present in the URI, will cause that request |
2968 | to | 3289 | to |
@@ -2982,7 +3303,7 @@ logged. | |||
2982 | \end_inset | 3303 | \end_inset |
2983 | 3304 | ||
2984 | for some tips for using this directive. | 3305 | for some tips for using this directive. |
2985 | \layout Quote | 3306 | \layout Standard |
2986 | 3307 | ||
2987 | Each string is separated by a space, and no regular expressions or globbing | 3308 | Each string is separated by a space, and no regular expressions or globbing |
2988 | are allowed. | 3309 | are allowed. |
@@ -2990,40 +3311,58 @@ Each string is separated by a space, and no regular expressions or globbing | |||
2990 | The comparison is case sensitive. | 3311 | The comparison is case sensitive. |
2991 | \layout Subsubsection | 3312 | \layout Subsubsection |
2992 | 3313 | ||
2993 | LogSQLRemhostIgnore | 3314 | LogSQLSocketFile |
2994 | \layout LyX-Code | 3315 | \layout LyX-Code |
2995 | 3316 | ||
2996 | Syntax: LogSQLRemhostIgnore host1 host2 host3 ... | 3317 | Syntax: LogSQLSocketFile filename |
2997 | hostN | ||
2998 | \layout LyX-Code | 3318 | \layout LyX-Code |
2999 | 3319 | ||
3000 | Example: LogSQLRemhostIgnore localnet.com | 3320 | Example: LogSQLSocketFile /tmp/mysql.sock |
3001 | \layout LyX-Code | 3321 | \layout LyX-Code |
3002 | 3322 | ||
3003 | Context: virtual host | 3323 | Default: /var/lib/mysql/mysql.sock |
3004 | \layout Quote | 3324 | \layout LyX-Code |
3005 | 3325 | ||
3006 | Lists a series of strings that, if present in the REMOTE_HOST, will cause | 3326 | Context: main server config |
3007 | that request to | 3327 | \layout Standard |
3008 | \series bold | ||
3009 | NOT | ||
3010 | \series default | ||
3011 | be logged. | ||
3012 | This directive is useful for cutting down on log clutter when you are certain | ||
3013 | that you want to ignore requests from certain hosts, such as your own internal | ||
3014 | network machines. | ||
3015 | See section | ||
3016 | \begin_inset LatexCommand \ref{sub:Ignore} | ||
3017 | 3328 | ||
3018 | \end_inset | 3329 | At Apache runtime you can specify the MySQL socket file to use. |
3330 | Set this once in your main server config to override the default value. | ||
3331 | This value is irrelevant if your database resides on a separate machine. | ||
3332 | \layout Standard | ||
3019 | 3333 | ||
3020 | for some tips for using this directive. | 3334 | mod_log_sql will automatically employ the socket for db communications if |
3021 | \layout Quote | 3335 | the database resides on the local host. |
3336 | If the db resides on a separate host the module will automatically use | ||
3337 | TCP/IP. | ||
3338 | This is a function of the MySQL API and is not user-configurable. | ||
3339 | \layout Standard | ||
3022 | 3340 | ||
3023 | Each string is separated by a space, and no regular expressions or globbing | 3341 | This is defined only once in the httpd.conf file. |
3024 | are allowed. | 3342 | \layout Subsubsection |
3025 | Each string is evaluated as a substring of the REMOTE_HOST using strstr(). | 3343 | |
3026 | The comparison is case sensitive. | 3344 | LogSQLTCPPort |
3345 | \layout LyX-Code | ||
3346 | |||
3347 | Syntax: LogSQLTCPPort portnumber | ||
3348 | \layout LyX-Code | ||
3349 | |||
3350 | Example: LogSQLTCPPort 3309 | ||
3351 | \layout LyX-Code | ||
3352 | |||
3353 | Default: 3306 | ||
3354 | \layout LyX-Code | ||
3355 | |||
3356 | Context: main server config | ||
3357 | \layout Standard | ||
3358 | |||
3359 | Your database may listen on a different port than the default. | ||
3360 | If so, use this directive to instruct the module which port to use. | ||
3361 | This directive only applies if the database is on a different machine connected | ||
3362 | via TCP/IP. | ||
3363 | \layout Standard | ||
3364 | |||
3365 | This is defined only once in the httpd.conf file. | ||
3027 | \layout Subsubsection | 3366 | \layout Subsubsection |
3028 | 3367 | ||
3029 | 3368 | ||
@@ -3044,7 +3383,7 @@ Default: AbHhmRSsTUuv | |||
3044 | \layout LyX-Code | 3383 | \layout LyX-Code |
3045 | 3384 | ||
3046 | Context: virtual host | 3385 | Context: virtual host |
3047 | \layout Quote | 3386 | \layout Standard |
3048 | 3387 | ||
3049 | Each character in the format-string defines an attribute of the request | 3388 | Each character in the format-string defines an attribute of the request |
3050 | that you wish to log. | 3389 | that you wish to log. |
@@ -4193,7 +4532,7 @@ for this to take effect. | |||
4193 | LogSQLMachineID | 4532 | LogSQLMachineID |
4194 | \noun default | 4533 | \noun default |
4195 | for this to take effect. | 4534 | for this to take effect. |
4196 | \layout Quote | 4535 | \layout Standard |
4197 | 4536 | ||
4198 | If you have compiled mod_log_sql with SSL logging capability, you also can | 4537 | If you have compiled mod_log_sql with SSL logging capability, you also can |
4199 | use these: | 4538 | use these: |
@@ -4390,6 +4729,61 @@ smallint unsigned | |||
4390 | 4729 | ||
4391 | \layout Subsubsection | 4730 | \layout Subsubsection |
4392 | 4731 | ||
4732 | LogSQLTransferLogTable | ||
4733 | \layout LyX-Code | ||
4734 | |||
4735 | |||
4736 | \series bold | ||
4737 | MANDATORY (unless | ||
4738 | \noun on | ||
4739 | LogSQLMassVirtualHosting | ||
4740 | \noun default | ||
4741 | is | ||
4742 | \begin_inset Quotes eld | ||
4743 | \end_inset | ||
4744 | |||
4745 | on | ||
4746 | \begin_inset Quotes erd | ||
4747 | \end_inset | ||
4748 | |||
4749 | ) | ||
4750 | \layout LyX-Code | ||
4751 | |||
4752 | Syntax: LogSQLTransferLogTable table-name | ||
4753 | \layout LyX-Code | ||
4754 | |||
4755 | Example: LogSQLTransferLogTable access_log_table | ||
4756 | \layout LyX-Code | ||
4757 | |||
4758 | Context: virtual host | ||
4759 | \layout Standard | ||
4760 | |||
4761 | Defines which table is used for logging of Apache's transfers; this is analogous | ||
4762 | to Apache's TransferLog directive. | ||
4763 | table-name must be a valid table within the database defined in | ||
4764 | \noun on | ||
4765 | LogSQLDatabase | ||
4766 | \noun default | ||
4767 | . | ||
4768 | \layout Standard | ||
4769 | |||
4770 | This directive is not necessary if you declare | ||
4771 | \noun on | ||
4772 | LogSQLMassVirtualHosting On | ||
4773 | \noun default | ||
4774 | , since that directive activates dynamically-named tables. | ||
4775 | If you attempt to use | ||
4776 | \noun on | ||
4777 | LogSQLTransferLogTable | ||
4778 | \noun default | ||
4779 | at the same time a warning will be logged and it will be ignored, since | ||
4780 | |||
4781 | \noun on | ||
4782 | LogSQLMassVirtualHosting | ||
4783 | \noun default | ||
4784 | takes priority. | ||
4785 | \layout Subsubsection | ||
4786 | |||
4393 | LogSQLWhichCookie | 4787 | LogSQLWhichCookie |
4394 | \layout LyX-Code | 4788 | \layout LyX-Code |
4395 | 4789 | ||
@@ -4403,12 +4797,12 @@ Default: None | |||
4403 | \layout LyX-Code | 4797 | \layout LyX-Code |
4404 | 4798 | ||
4405 | Context: virtual host | 4799 | Context: virtual host |
4406 | \layout Quote | 4800 | \layout Standard |
4407 | 4801 | ||
4408 | In HTTP, cookies have names to distinguish them from each other. | 4802 | In HTTP, cookies have names to distinguish them from each other. |
4409 | Using mod_usertrack, for example, you can give your user-tracking cookies | 4803 | Using mod_usertrack, for example, you can give your user-tracking cookies |
4410 | a name with the CookieName directive. | 4804 | a name with the CookieName directive. |
4411 | \layout Quote | 4805 | \layout Standard |
4412 | 4806 | ||
4413 | You must include a 'c' character in | 4807 | You must include a 'c' character in |
4414 | \noun on | 4808 | \noun on |
@@ -4421,7 +4815,7 @@ LogSQLWhichCookie | |||
4421 | tells mod_log_sql which cookie to log. | 4815 | tells mod_log_sql which cookie to log. |
4422 | This is necessary because you will usually be setting and receiving more | 4816 | This is necessary because you will usually be setting and receiving more |
4423 | than one cookie from a client; this cookie designates which one to log. | 4817 | than one cookie from a client; this cookie designates which one to log. |
4424 | \layout Quote | 4818 | \layout Standard |
4425 | 4819 | ||
4426 | Note: although this was intended for people who are using mod_usertrack | 4820 | Note: although this was intended for people who are using mod_usertrack |
4427 | to set user-tracking cookies, you aren't restricted in any way. | 4821 | to set user-tracking cookies, you aren't restricted in any way. |
@@ -4444,7 +4838,7 @@ Default: None | |||
4444 | \layout LyX-Code | 4838 | \layout LyX-Code |
4445 | 4839 | ||
4446 | Context: virtual host | 4840 | Context: virtual host |
4447 | \layout Quote | 4841 | \layout Standard |
4448 | 4842 | ||
4449 | Defines the list of cookies you would like logged. | 4843 | Defines the list of cookies you would like logged. |
4450 | This works in conjunction with | 4844 | This works in conjunction with |
@@ -4460,7 +4854,7 @@ LogSQLTransferLogFormat | |||
4460 | string. | 4854 | string. |
4461 | The feature is activated simply by including this directive, upon which | 4855 | The feature is activated simply by including this directive, upon which |
4462 | you will begin populating the separate cookie table with data. | 4856 | you will begin populating the separate cookie table with data. |
4463 | \layout Quote | 4857 | \layout Standard |
4464 | 4858 | ||
4465 | Note that you must have already created the table (see create-tables.sql, | 4859 | Note that you must have already created the table (see create-tables.sql, |
4466 | included in the package), or | 4860 | included in the package), or |
@@ -4492,7 +4886,7 @@ Default: None | |||
4492 | \layout LyX-Code | 4886 | \layout LyX-Code |
4493 | 4887 | ||
4494 | Context: virtual host | 4888 | Context: virtual host |
4495 | \layout Quote | 4889 | \layout Standard |
4496 | 4890 | ||
4497 | Defines the list of inbound headers you would like logged. | 4891 | Defines the list of inbound headers you would like logged. |
4498 | This works in conjunction with | 4892 | This works in conjunction with |
@@ -4508,7 +4902,7 @@ LogSQLTransferLogFormat | |||
4508 | string. | 4902 | string. |
4509 | The feature is activated simply by including this directive, upon which | 4903 | The feature is activated simply by including this directive, upon which |
4510 | you will begin populating the separate inbound-headers table with data. | 4904 | you will begin populating the separate inbound-headers table with data. |
4511 | \layout Quote | 4905 | \layout Standard |
4512 | 4906 | ||
4513 | Note that you must have already created the table (see create-tables.sql, | 4907 | Note that you must have already created the table (see create-tables.sql, |
4514 | included in the package), or | 4908 | included in the package), or |
@@ -4540,7 +4934,7 @@ Default: None | |||
4540 | \layout LyX-Code | 4934 | \layout LyX-Code |
4541 | 4935 | ||
4542 | Context: virtual host | 4936 | Context: virtual host |
4543 | \layout Quote | 4937 | \layout Standard |
4544 | 4938 | ||
4545 | Defines the list of outbound headers you would like logged. | 4939 | Defines the list of outbound headers you would like logged. |
4546 | This works in conjunction with | 4940 | This works in conjunction with |
@@ -4556,7 +4950,7 @@ LogSQLTransferLogFormat | |||
4556 | string. | 4950 | string. |
4557 | The feature is activated simply by including this directive, upon which | 4951 | The feature is activated simply by including this directive, upon which |
4558 | you will begin populating the separate outbound-headers table with data. | 4952 | you will begin populating the separate outbound-headers table with data. |
4559 | \layout Quote | 4953 | \layout Standard |
4560 | 4954 | ||
4561 | Note that you must have already created the table (see create-tables.sql, | 4955 | Note that you must have already created the table (see create-tables.sql, |
4562 | included in the package), or | 4956 | included in the package), or |
@@ -4588,7 +4982,7 @@ Default: None | |||
4588 | \layout LyX-Code | 4982 | \layout LyX-Code |
4589 | 4983 | ||
4590 | Context: virtual host | 4984 | Context: virtual host |
4591 | \layout Quote | 4985 | \layout Standard |
4592 | 4986 | ||
4593 | Defines the list of notes you would like logged. | 4987 | Defines the list of notes you would like logged. |
4594 | This works in conjunction with | 4988 | This works in conjunction with |
@@ -4604,7 +4998,7 @@ LogSQLTransferLogFormat | |||
4604 | string. | 4998 | string. |
4605 | The feature is activated simply by including this directive, upon which | 4999 | The feature is activated simply by including this directive, upon which |
4606 | you will begin populating the separate notes table with data. | 5000 | you will begin populating the separate notes table with data. |
4607 | \layout Quote | 5001 | \layout Standard |
4608 | 5002 | ||
4609 | Note that you must have already created the table (see create-tables.sql, | 5003 | Note that you must have already created the table (see create-tables.sql, |
4610 | included in the package), or | 5004 | included in the package), or |
@@ -4620,177 +5014,14 @@ on | |||
4620 | \end_inset | 5014 | \end_inset |
4621 | 5015 | ||
4622 | . | 5016 | . |
4623 | \layout Subsubsection | ||
4624 | |||
4625 | LogSQLCookieLogTable | ||
4626 | \layout LyX-Code | ||
4627 | |||
4628 | Syntax: LogSQLCookieLogTable table-name | ||
4629 | \layout LyX-Code | ||
4630 | |||
4631 | Example: LogSQLCookieLogTable cookie_log | ||
4632 | \layout LyX-Code | ||
4633 | |||
4634 | Default: cookies | ||
4635 | \layout LyX-Code | ||
4636 | |||
4637 | Context: virtual host | ||
4638 | \layout Quote | ||
4639 | |||
4640 | Defines which table is used for logging of cookies. | ||
4641 | Working in conjunction with | ||
4642 | \noun on | ||
4643 | LogSQLWhichCookies | ||
4644 | \noun default | ||
4645 | , you can log many of each request's associated cookies to a separate table. | ||
4646 | For meaningful data retrieval the cookie table is keyed to the access table | ||
4647 | by the unique request ID supplied by the standard Apache module mod_unique_id. | ||
4648 | \layout Quote | ||
4649 | |||
4650 | Note that you must create the table (see create-tables.sql, included in the | ||
4651 | package), or | ||
4652 | \noun on | ||
4653 | LogSQLCreateTables | ||
4654 | \noun default | ||
4655 | must be set to | ||
4656 | \begin_inset Quotes eld | ||
4657 | \end_inset | ||
4658 | |||
4659 | on | ||
4660 | \begin_inset Quotes erd | ||
4661 | \end_inset | ||
4662 | |||
4663 | . | ||
4664 | \layout Subsubsection | ||
4665 | |||
4666 | LogSQLHeadersInLogTable | ||
4667 | \layout LyX-Code | ||
4668 | |||
4669 | Syntax: LogSQLHeadersInLogTable table-name | ||
4670 | \layout LyX-Code | ||
4671 | |||
4672 | Example: LogSQLHeadersInLogTable headers | ||
4673 | \layout LyX-Code | ||
4674 | |||
4675 | Default: headers_in | ||
4676 | \layout LyX-Code | ||
4677 | |||
4678 | Context: virtual host | ||
4679 | \layout Quote | ||
4680 | |||
4681 | Defines which table is used for logging of inbound headers. | ||
4682 | Working in conjunction with | ||
4683 | \noun on | ||
4684 | LogSQLWhichHeadersIn | ||
4685 | \noun default | ||
4686 | , you can log many of each request's associated headers to a separate table. | ||
4687 | For meaningful data retrieval the headers table is keyed to the access | ||
4688 | table by the unique request ID supplied by the standard Apache module mod_uniqu | ||
4689 | e_id. | ||
4690 | \layout Quote | ||
4691 | |||
4692 | Note that you must create the table (see create-tables.sql, included in the | ||
4693 | package), or | ||
4694 | \noun on | ||
4695 | LogSQLCreateTables | ||
4696 | \noun default | ||
4697 | must be set to | ||
4698 | \begin_inset Quotes eld | ||
4699 | \end_inset | ||
4700 | |||
4701 | on | ||
4702 | \begin_inset Quotes erd | ||
4703 | \end_inset | ||
4704 | |||
4705 | . | ||
4706 | \layout Subsubsection | ||
4707 | |||
4708 | LogSQLHeadersOutLogTable | ||
4709 | \layout LyX-Code | ||
4710 | |||
4711 | Syntax: LogSQLHeadersOutLogTable table-name | ||
4712 | \layout LyX-Code | ||
4713 | |||
4714 | Example: LogSQLHeadersOutLogTable headers | ||
4715 | \layout LyX-Code | ||
4716 | |||
4717 | Default: headers_out | ||
4718 | \layout LyX-Code | ||
4719 | |||
4720 | Context: virtual host | ||
4721 | \layout Quote | ||
4722 | |||
4723 | Defines which table is used for logging of outbound headers. | ||
4724 | Working in conjunction with | ||
4725 | \noun on | ||
4726 | LogSQLWhichHeadersOut | ||
4727 | \noun default | ||
4728 | , you can log many of each request's associated headers to a separate table. | ||
4729 | For meaningful data retrieval the headers table is keyed to the access | ||
4730 | table by the unique request ID supplied by the standard Apache module mod_uniqu | ||
4731 | e_id. | ||
4732 | \layout Quote | ||
4733 | |||
4734 | Note that you must create the table (see create-tables.sql, included in the | ||
4735 | package), or | ||
4736 | \noun on | ||
4737 | LogSQLCreateTables | ||
4738 | \noun default | ||
4739 | must be set to | ||
4740 | \begin_inset Quotes eld | ||
4741 | \end_inset | ||
4742 | |||
4743 | on | ||
4744 | \begin_inset Quotes erd | ||
4745 | \end_inset | ||
4746 | |||
4747 | . | ||
4748 | \layout Subsubsection | ||
4749 | |||
4750 | LogSQLNotesLogTable | ||
4751 | \layout LyX-Code | ||
4752 | |||
4753 | Syntax: LogSQLNotesLogTable table-name | ||
4754 | \layout LyX-Code | ||
4755 | |||
4756 | Example: LogSQLNotesLogTable notes_log | ||
4757 | \layout LyX-Code | ||
4758 | |||
4759 | Default: notes | ||
4760 | \layout LyX-Code | ||
4761 | |||
4762 | Context: virtual host | ||
4763 | \layout Quote | ||
4764 | |||
4765 | Defines which table is used for logging of notes. | ||
4766 | Working in conjunction with | ||
4767 | \noun on | ||
4768 | LogSQLWhichNotes | ||
4769 | \noun default | ||
4770 | , you can log many of each request's associated notes to a separate table. | ||
4771 | For meaningful data retrieval the notes table is keyed to the access table | ||
4772 | by the unique request ID supplied by the standard Apache module mod_unique_id. | ||
4773 | \layout Quote | ||
4774 | |||
4775 | Note that you must create the table (see create-tables.sql, included in the | ||
4776 | package), or | ||
4777 | \noun on | ||
4778 | LogSQLCreateTables | ||
4779 | \noun default | ||
4780 | must be set to | ||
4781 | \begin_inset Quotes eld | ||
4782 | \end_inset | ||
4783 | |||
4784 | on | ||
4785 | \begin_inset Quotes erd | ||
4786 | \end_inset | ||
4787 | |||
4788 | . | ||
4789 | \layout Section | 5017 | \layout Section |
4790 | 5018 | ||
4791 | FAQ | 5019 | FAQ |
4792 | \layout Subsection | 5020 | \layout Subsection |
4793 | 5021 | ||
5022 | General module questions | ||
5023 | \layout Subsubsection | ||
5024 | |||
4794 | 5025 | ||
4795 | \begin_inset LatexCommand \label{sub:why} | 5026 | \begin_inset LatexCommand \label{sub:why} |
4796 | 5027 | ||
@@ -5349,7 +5580,7 @@ http://freshmeat.net | |||
5349 | As you can see, there are myriad possibilities that can be constructed with | 5580 | As you can see, there are myriad possibilities that can be constructed with |
5350 | the wonderful SQL SELECT statement. | 5581 | the wonderful SQL SELECT statement. |
5351 | Logging to an SQL database can be really quite useful! | 5582 | Logging to an SQL database can be really quite useful! |
5352 | \layout Subsection | 5583 | \layout Subsubsection |
5353 | 5584 | ||
5354 | Why use MySQL? Are there alternatives? | 5585 | Why use MySQL? Are there alternatives? |
5355 | \layout Standard | 5586 | \layout Standard |
@@ -5372,7 +5603,7 @@ That being said, there are alternatives. | |||
5372 | \end_inset | 5603 | \end_inset |
5373 | 5604 | ||
5374 | . | 5605 | . |
5375 | \layout Subsection | 5606 | \layout Subsubsection |
5376 | 5607 | ||
5377 | Is this code production-ready? | 5608 | Is this code production-ready? |
5378 | \layout Standard | 5609 | \layout Standard |
@@ -5381,12 +5612,121 @@ By all accounts it is. | |||
5381 | It is known to work without a problem on many-thousands-of-hits-per-day | 5612 | It is known to work without a problem on many-thousands-of-hits-per-day |
5382 | webservers. | 5613 | webservers. |
5383 | Does that mean it is 100% bug free? Well, no software is. | 5614 | Does that mean it is 100% bug free? Well, no software is. |
5384 | But it is well-tested and /believed/ to be fully compatible with production | 5615 | But it is well-tested and believed to be fully compatible with production |
5385 | environments. | 5616 | environments. |
5386 | (The usual disclaimers apply. | 5617 | (The usual disclaimers apply. |
5387 | This software is provided without warranty of any kind.) | 5618 | This software is provided without warranty of any kind.) |
5619 | \layout Subsubsection | ||
5620 | |||
5621 | Who's using mod_log_sql? | ||
5622 | \layout Standard | ||
5623 | |||
5624 | Good question! It would be great to find out! If you are a production-level | ||
5625 | mod_log_sql user, please contact | ||
5626 | \begin_inset LatexCommand \url[the maintainer, Chris Powell]{(chris@grubbybaby.com)} | ||
5627 | |||
5628 | \end_inset | ||
5629 | |||
5630 | so that you can be mentioned here. | ||
5631 | \layout Subsubsection | ||
5632 | |||
5633 | Why doesn't the module also replace the Apache ErrorLog? | ||
5634 | \layout Standard | ||
5635 | |||
5636 | There are circumstances when that would be quite unwise -- for example, | ||
5637 | if Apache could not reach the MySQL server for some reason and needed to | ||
5638 | log that fact. | ||
5639 | Without a text-based error log you'd never know anything was wrong, because | ||
5640 | Apache would be trying to log a database connection error to the database... | ||
5641 | you get the point. | ||
5642 | \layout Standard | ||
5643 | |||
5644 | Error logs are usually not very high-traffic and are really best left as | ||
5645 | text files on a web server machine. | ||
5646 | \layout Subsubsection | ||
5647 | |||
5648 | Does mod_log_sql work with Apache 2.x? | ||
5649 | \layout Standard | ||
5650 | |||
5651 | As of this writing, no. | ||
5652 | The Apache Group significantly altered the module API with the release | ||
5653 | of Apache 2.0. | ||
5654 | All modules written for 1.3, including mod_log_sql, will not work with 2.0. | ||
5655 | \layout Standard | ||
5656 | |||
5657 | mod_log_sql will eventually be ported to Apache 2.x, but not immediately. | ||
5658 | It is going to take some time, and there are other features that have higher | ||
5659 | priority. | ||
5660 | Please sign up for the announcements list (on the main website) or monitor | ||
5661 | the website for updates to learn when the port (and other releases) are | ||
5662 | available. | ||
5663 | \layout Standard | ||
5664 | |||
5665 | <OPINION>If you're a *NIX user, stick with Apache 1.3.x for now. | ||
5666 | Major modules like mod_ssl and PHP are not even ready for 2.0 yet, and the | ||
5667 | main benefits in 2.0 are for Win32 users anyway. | ||
5668 | Apache 1.3.x is rock-stable and performs equally well on *NIX as 2.0.</OPINION> | ||
5669 | \layout Subsubsection | ||
5670 | |||
5671 | Does mod_log_sql connect to MySQL via TCP/IP or a socket? | ||
5672 | \layout Standard | ||
5673 | |||
5674 | It depends! This is not determined by mod_log_sql. | ||
5675 | mod_log_sql relies on a connection command that is supplied in the MySQL | ||
5676 | API, and that command is somewhat intelligent. | ||
5677 | How it works: | ||
5678 | \layout Itemize | ||
5679 | |||
5680 | if the specified MySQL database is on the same machine, the connection command | ||
5681 | uses a socket to communicate with MySQL | ||
5682 | \layout Itemize | ||
5683 | |||
5684 | if the specified MySQL database is on a different machine, mod_log_sql connects | ||
5685 | using TCP/IP. | ||
5686 | |||
5687 | \layout Standard | ||
5688 | |||
5689 | You don't have any control of which methodology is used. | ||
5690 | You can fine-tune some of the configuration, however. | ||
5691 | The | ||
5692 | \noun on | ||
5693 | LogSQLSocketFile | ||
5694 | \noun default | ||
5695 | runtime configuration directive overrides the default of | ||
5696 | \begin_inset Quotes eld | ||
5697 | \end_inset | ||
5698 | |||
5699 | /var/lib/mysql/mysql.sock | ||
5700 | \begin_inset Quotes erd | ||
5701 | \end_inset | ||
5702 | |||
5703 | for socket-based connections, whereas the | ||
5704 | \noun on | ||
5705 | LogSQLTCPPort | ||
5706 | \noun default | ||
5707 | command allows to you override the default TCP port of 3306 for TCP/IP | ||
5708 | connections. | ||
5709 | \layout Subsubsection | ||
5710 | |||
5711 | I have discovered a bug. | ||
5712 | Who can I contact? | ||
5713 | \layout Standard | ||
5714 | |||
5715 | Please contact | ||
5716 | \begin_inset LatexCommand \url[the maintainer]{(chris@grubbybaby.com)} | ||
5717 | |||
5718 | \end_inset | ||
5719 | |||
5720 | ! Your comments, suggestions, bugfixes, bug catches, and usage testimonials | ||
5721 | are always welcome. | ||
5722 | As free software, mod_log_sql is intended to be a community effort -- any | ||
5723 | code contributions or other ideas will be fully and openly credited, of | ||
5724 | course. | ||
5388 | \layout Subsection | 5725 | \layout Subsection |
5389 | 5726 | ||
5727 | Performance and Tuning | ||
5728 | \layout Subsubsection | ||
5729 | |||
5390 | How well does it perform? | 5730 | How well does it perform? |
5391 | \layout Standard | 5731 | \layout Standard |
5392 | 5732 | ||
@@ -5525,14 +5865,14 @@ mysql> delete from access_log where agent like 'ApacheBench%'; | |||
5525 | \layout LyX-Code | 5865 | \layout LyX-Code |
5526 | 5866 | ||
5527 | mysql> optimize table access_log; | 5867 | mysql> optimize table access_log; |
5528 | \layout Subsection | 5868 | \layout Subsubsection |
5529 | 5869 | ||
5530 | Do I need to be worried about all the running MySQL children? Will holding | 5870 | Do I need to be worried about all the running MySQL children? Will holding |
5531 | open | 5871 | open |
5532 | \emph on | 5872 | \emph on |
5533 | n | 5873 | n |
5534 | \emph default | 5874 | \emph default |
5535 | Apache -> MySQL connections consume a lot of memory? | 5875 | Apache-to-MySQL connections consume a lot of memory? |
5536 | \layout Standard | 5876 | \layout Standard |
5537 | 5877 | ||
5538 | Short answer: you shouldn't be worried. | 5878 | Short answer: you shouldn't be worried. |
@@ -5564,8 +5904,8 @@ ps -aufxw | |||
5564 | 30 children each... | 5904 | 30 children each... |
5565 | \layout Standard | 5905 | \layout Standard |
5566 | 5906 | ||
5567 | Fortunately the cost reported by 'ps -aufxw' is indeed deceptive due to | 5907 | Fortunately the cost reported by 'ps -aufxw' is deceptive. |
5568 | an OS memory-management feature called | 5908 | This is due to an OS memory-management feature called |
5569 | \begin_inset Quotes eld | 5909 | \begin_inset Quotes eld |
5570 | \end_inset | 5910 | \end_inset |
5571 | 5911 | ||
@@ -5573,7 +5913,6 @@ copy-on-write. | |||
5573 | \begin_inset Quotes erd | 5913 | \begin_inset Quotes erd |
5574 | \end_inset | 5914 | \end_inset |
5575 | 5915 | ||
5576 | This is a memory-management technique used by Unix-based systems. | ||
5577 | When you have a number of identical child processes (e.g. | 5916 | When you have a number of identical child processes (e.g. |
5578 | Apache, MySQL), it would appear in | 5917 | Apache, MySQL), it would appear in |
5579 | \begin_inset Quotes eld | 5918 | \begin_inset Quotes eld |
@@ -5597,7 +5936,8 @@ read-only | |||
5597 | fashion. | 5936 | fashion. |
5598 | The OS can get away with this because the majority of memory pages for | 5937 | The OS can get away with this because the majority of memory pages for |
5599 | one child are identical across all children. | 5938 | one child are identical across all children. |
5600 | 5939 | Instead of thinking of each child as a rubber stamp of the others, think | |
5940 | of each child as a basket of links to a common memory area. | ||
5601 | \layout Standard | 5941 | \layout Standard |
5602 | 5942 | ||
5603 | A memory page is only duplicated when it needs to be written to, hence | 5943 | A memory page is only duplicated when it needs to be written to, hence |
@@ -5655,9 +5995,17 @@ do not | |||
5655 | occupy 880MB of RAM. | 5995 | occupy 880MB of RAM. |
5656 | \layout Standard | 5996 | \layout Standard |
5657 | 5997 | ||
5658 | The bottom line: although tangible, there is not much memory cost associated | 5998 | The bottom line: although there is a cost to spawn extra httpd or mysqld |
5659 | with spawning off extra httpd or mysqld children. | 5999 | children, that cost is not as great as |
5660 | \layout Subsection | 6000 | \begin_inset Quotes eld |
6001 | \end_inset | ||
6002 | |||
6003 | ps | ||
6004 | \begin_inset Quotes erd | ||
6005 | \end_inset | ||
6006 | |||
6007 | would lead you to believe. | ||
6008 | \layout Subsubsection | ||
5661 | 6009 | ||
5662 | My database cannot handle all the open connections from mod_log_sql, is | 6010 | My database cannot handle all the open connections from mod_log_sql, is |
5663 | there anything I can do? | 6011 | there anything I can do? |
@@ -5708,7 +6056,7 @@ performance | |||
5708 | than the alternatives because it dispenses with the overhead associated | 6056 | than the alternatives because it dispenses with the overhead associated |
5709 | with rapid connection cycling, and it doesn't attempt to shoehorn all the | 6057 | with rapid connection cycling, and it doesn't attempt to shoehorn all the |
5710 | database traffic through a single extra daemon or proxy process. | 6058 | database traffic through a single extra daemon or proxy process. |
5711 | \layout Subsection | 6059 | \layout Subsubsection |
5712 | 6060 | ||
5713 | My webservers cannot handle all the traffic that my site receives, is there | 6061 | My webservers cannot handle all the traffic that my site receives, is there |
5714 | anything I can do? | 6062 | anything I can do? |
@@ -5718,20 +6066,193 @@ If you have exhausted all the tuning possibilities on your existing server, | |||
5718 | it is probably time you evaluated the benefits of clustering two or more | 6066 | it is probably time you evaluated the benefits of clustering two or more |
5719 | webservers together in a load-balanced fashion. | 6067 | webservers together in a load-balanced fashion. |
5720 | In fact, users of such a setup are mod_log_sql's target audience! | 6068 | In fact, users of such a setup are mod_log_sql's target audience! |
5721 | \layout Subsection | 6069 | \layout Subsubsection |
5722 | 6070 | ||
5723 | Who's using mod_log_sql? | 6071 | Why do I occasionally see a |
6072 | \begin_inset Quotes eld | ||
6073 | \end_inset | ||
6074 | |||
6075 | lost connection to MySQL server | ||
6076 | \begin_inset Quotes erd | ||
6077 | \end_inset | ||
6078 | |||
6079 | message in my error-log? | ||
5724 | \layout Standard | 6080 | \layout Standard |
5725 | 6081 | ||
5726 | Good question! It would be great to find out! If you are a production-level | 6082 | This message may appear every now and then in your Apache error log, especially |
5727 | mod_log_sql user, please contact | 6083 | on very lightly loaded servers. |
5728 | \begin_inset LatexCommand \url[the maintainer, Chris Powell]{(chris@grubbybaby.com)} | 6084 | This doesn't mean that anything is necessarily wrong. |
6085 | Within each httpd child process, mod_log_sql will open (and keep open) | ||
6086 | a connection to the MySQL server. | ||
6087 | MySQL, however, will close connections that haven't been used in a while; | ||
6088 | the default timeout is 8 hours. | ||
6089 | When this occurs, mod_log_sql will notice and re-open the connection. | ||
6090 | That event is what is being logged, and looks like this: | ||
6091 | \layout LyX-Code | ||
6092 | |||
6093 | [Tue Nov 12 19:04:10 2002] [error] mod_log_sql: first attempt failed, | ||
6094 | \layout LyX-Code | ||
6095 | |||
6096 | API said: error 2013, Lost connection to MySQL server during query | ||
6097 | \layout LyX-Code | ||
6098 | |||
6099 | [Tue Nov 12 19:04:10 2002] [error] mod_log_sql: reconnect successful | ||
6100 | \layout LyX-Code | ||
6101 | |||
6102 | [Tue Nov 12 19:04:10 2002] [error] mod_log_sql: second attempt successful | ||
6103 | \layout Standard | ||
6104 | |||
6105 | Reference: | ||
6106 | \begin_inset LatexCommand \url[MySQL documentation]{(http://www.mysql.com/documentation/mysql/bychapter/manual_Problems.html#Gone_away)} | ||
5729 | 6107 | ||
5730 | \end_inset | 6108 | \end_inset |
5731 | 6109 | ||
5732 | so that you can be mentioned here. | 6110 | |
6111 | \layout Subsubsection | ||
6112 | |||
6113 | |||
6114 | \begin_inset LatexCommand \label{sub:DelayedInsFAQ} | ||
6115 | |||
6116 | \end_inset | ||
6117 | |||
6118 | What is the issue with activating delayed inserts? | ||
6119 | \layout Standard | ||
6120 | |||
6121 | There are several. | ||
6122 | \layout Enumerate | ||
6123 | |||
6124 | INSERT DELAYED is a specific syntax to MySQL and is not supported by any | ||
6125 | other database. | ||
6126 | Ergo, why is it needed, and what MySQL deficiency is it working around? | ||
6127 | INSERT DELAYED is a kluge. | ||
6128 | \layout Enumerate | ||
6129 | |||
6130 | The MySQL documentation is unclear whether INSERT DELAYED is even necessary | ||
6131 | for an optimized database. | ||
6132 | It says, | ||
6133 | \begin_inset Quotes eld | ||
6134 | \end_inset | ||
6135 | |||
6136 | The DELAYED option for the INSERT statement is a MySQL-specific option that | ||
6137 | is very useful if you have clients that can't wait for the INSERT to complete. | ||
6138 | \begin_inset Quotes erd | ||
6139 | \end_inset | ||
6140 | |||
6141 | But then it goes on to say, | ||
6142 | \begin_inset Quotes eld | ||
6143 | \end_inset | ||
6144 | |||
6145 | Note that as MyISAM tables supports concurrent SELECT and INSERT, if there | ||
6146 | is no free blocks in the middle of the data file, you very seldom need | ||
6147 | to use INSERT DELAYED with MyISAM. | ||
6148 | \begin_inset Quotes erd | ||
6149 | \end_inset | ||
6150 | |||
6151 | |||
6152 | \layout Enumerate | ||
6153 | |||
6154 | Because INSERT DELAYED returns without waiting for the data to be written, | ||
6155 | a hard kill of your MySQL database at the right (wrong?) moment could lose | ||
6156 | those logfile entries. | ||
6157 | \layout Enumerate | ||
6158 | |||
6159 | As of MySQL version 3.23.52, the error return functions disagree after a failed | ||
6160 | INSERT DELAYED: mysql_errno() always returns 0, even if mysql_error() returns | ||
6161 | a textual error. | ||
6162 | I have reported this bug to the MySQL folks. | ||
6163 | However, we have no way of knowing what solution they will adopt to fix | ||
6164 | this, and with the worst case solution mod_log_sql would not be able to | ||
6165 | tell if anything went wrong with a delayed insert. | ||
6166 | \layout Standard | ||
6167 | |||
6168 | If after understanding these problems you still wish to enable delayed inserts, | ||
6169 | section | ||
6170 | \begin_inset LatexCommand \ref{sub:DelayedIns} | ||
6171 | |||
6172 | \end_inset | ||
6173 | |||
6174 | discusses how. | ||
5733 | \layout Subsection | 6175 | \layout Subsection |
5734 | 6176 | ||
6177 | |||
6178 | \begin_inset Quotes eld | ||
6179 | \end_inset | ||
6180 | |||
6181 | How do I...? | ||
6182 | \begin_inset Quotes erd | ||
6183 | \end_inset | ||
6184 | |||
6185 | -- accomplishing certain tasks | ||
6186 | \layout Subsubsection | ||
6187 | |||
6188 | I am using LogSQLMassVirtualHosting, and sometimes a single VirtualHost | ||
6189 | gets logged to two different tables. | ||
6190 | How do I prevent that? | ||
6191 | \layout Standard | ||
6192 | |||
6193 | Proper usage of the Apache runtime | ||
6194 | \noun on | ||
6195 | ServerName | ||
6196 | \noun default | ||
6197 | directive and the directive | ||
6198 | \noun on | ||
6199 | UseCanonicalName On | ||
6200 | \noun default | ||
6201 | (or | ||
6202 | \noun on | ||
6203 | DNS | ||
6204 | \noun default | ||
6205 | ) are necessary to prevent this problem. | ||
6206 | |||
6207 | \begin_inset Quotes eld | ||
6208 | \end_inset | ||
6209 | |||
6210 | On | ||
6211 | \begin_inset Quotes erd | ||
6212 | \end_inset | ||
6213 | |||
6214 | is the default for | ||
6215 | \noun on | ||
6216 | UseCanonicalName | ||
6217 | \noun default | ||
6218 | , and specifies that self-referential URLs are generated from the | ||
6219 | \noun on | ||
6220 | ServerName | ||
6221 | \noun default | ||
6222 | part of your VirtualHost: | ||
6223 | \layout Quote | ||
6224 | |||
6225 | With UseCanonicalName on (and in all versions prior to 1.3) Apache will use | ||
6226 | the ServerName and Port directives to construct the canonical name for | ||
6227 | the server. | ||
6228 | With UseCanonicalName off Apache will form self-referential URLs using | ||
6229 | the hostname and port supplied by the client if any are supplied (otherwise | ||
6230 | it will use the canonical name, as defined above). | ||
6231 | [From | ||
6232 | \begin_inset LatexCommand \url[the Apache documentation]{http://httpd.apache.org/docs/mod/core.html#usecanonicalname} | ||
6233 | |||
6234 | \end_inset | ||
6235 | |||
6236 | ] | ||
6237 | \layout Standard | ||
6238 | |||
6239 | The module inherits Apache's | ||
6240 | \begin_inset Quotes eld | ||
6241 | \end_inset | ||
6242 | |||
6243 | knowledge | ||
6244 | \begin_inset Quotes erd | ||
6245 | \end_inset | ||
6246 | |||
6247 | about the server name being accessed. | ||
6248 | As long as those two directives are properly configured, mod_log_sql will | ||
6249 | log to only one table per virtual host while using | ||
6250 | \noun on | ||
6251 | LogSQLMassVirtualHosting | ||
6252 | \noun default | ||
6253 | . | ||
6254 | \layout Subsubsection | ||
6255 | |||
5735 | How do I extract the data in a format that my analysis tool can understand? | 6256 | How do I extract the data in a format that my analysis tool can understand? |
5736 | \layout Standard | 6257 | \layout Standard |
5737 | 6258 | ||
@@ -5790,22 +6311,7 @@ rm -f /var/log/httpd/templog | |||
5790 | \layout Standard | 6311 | \layout Standard |
5791 | 6312 | ||
5792 | See? Easy. | 6313 | See? Easy. |
5793 | \layout Subsection | 6314 | \layout Subsubsection |
5794 | |||
5795 | Why doesn't the module also replace the Apache ErrorLog? | ||
5796 | \layout Standard | ||
5797 | |||
5798 | There are circumstances when that would be quite unwise -- for example, | ||
5799 | if Apache could not reach the MySQL server for some reason and needed to | ||
5800 | log that fact. | ||
5801 | Without a text-based error log you'd never know anything was wrong, because | ||
5802 | Apache would be trying to log a database connection error to the database... | ||
5803 | you get the point. | ||
5804 | \layout Standard | ||
5805 | |||
5806 | Error logs are usually not very high-traffic and are really best left as | ||
5807 | text files on a web server machine. | ||
5808 | \layout Subsection | ||
5809 | 6315 | ||
5810 | 6316 | ||
5811 | \begin_inset LatexCommand \label{sec:cookie} | 6317 | \begin_inset LatexCommand \label{sec:cookie} |
@@ -6007,7 +6513,7 @@ ool-18e4.dyn.optonline.net.130051007102700823 | |||
6007 | 6513 | ||
6008 | \layout LyX-Code | 6514 | \layout LyX-Code |
6009 | 6515 | ||
6010 | \layout Subsection | 6516 | \layout Subsubsection |
6011 | 6517 | ||
6012 | What if I want to log more than one cookie? What is the difference between | 6518 | What if I want to log more than one cookie? What is the difference between |
6013 | LogSQLWhichCookie and LogSQLWhichCookies? | 6519 | LogSQLWhichCookie and LogSQLWhichCookies? |
@@ -6077,7 +6583,7 @@ LogSQLWhichCookies | |||
6077 | \noun default | 6583 | \noun default |
6078 | can coexist without conflict because they operate on entireley different | 6584 | can coexist without conflict because they operate on entireley different |
6079 | tables, but you're better off choosing the one you need. | 6585 | tables, but you're better off choosing the one you need. |
6080 | \layout Subsection | 6586 | \layout Subsubsection |
6081 | 6587 | ||
6082 | What are the SSL logging features, and how do I activate them? | 6588 | What are the SSL logging features, and how do I activate them? |
6083 | \layout Standard | 6589 | \layout Standard |
@@ -6091,6 +6597,7 @@ need to compile SSL support into mod_log_sql in order to simply use it with | |||
6091 | You only need to compile SSL support into mod_log_sql if you want to log | 6597 | You only need to compile SSL support into mod_log_sql if you want to log |
6092 | SSL-specific data such as the cipher type used, or the keysize that was | 6598 | SSL-specific data such as the cipher type used, or the keysize that was |
6093 | negotiated. | 6599 | negotiated. |
6600 | If that information is unimportant to you, you can ignore this FAQ. | ||
6094 | \layout Standard | 6601 | \layout Standard |
6095 | 6602 | ||
6096 | By adding certain characters to your | 6603 | By adding certain characters to your |
@@ -6349,128 +6856,4 @@ RC4-MD5 | |||
6349 | 6856 | ||
6350 | \layout LyX-Code | 6857 | \layout LyX-Code |
6351 | 6858 | ||
6352 | \layout Subsection | ||
6353 | |||
6354 | Does mod_log_sql connect to MySQL via TCP/IP or a socket? | ||
6355 | \layout Standard | ||
6356 | |||
6357 | It depends! This is not determined by mod_log_sql. | ||
6358 | mod_log_sql relies on a connection command that is supplied in the MySQL | ||
6359 | API, and that command is somewhat intelligent. | ||
6360 | How it works: | ||
6361 | \layout Itemize | ||
6362 | |||
6363 | if the specified MySQL database is on the same machine, the connection command | ||
6364 | uses a socket to communicate with MySQL | ||
6365 | \layout Itemize | ||
6366 | |||
6367 | if the specified MySQL database is on a different machine, mod_log_sql connects | ||
6368 | using TCP/IP. | ||
6369 | |||
6370 | \layout Standard | ||
6371 | |||
6372 | You don't have any control of which methodology is used. | ||
6373 | You can fine-tune some of the configuration, however. | ||
6374 | The | ||
6375 | \noun on | ||
6376 | LogSQLSocketFile | ||
6377 | \noun default | ||
6378 | runtime configuration directive overrides the default of | ||
6379 | \begin_inset Quotes eld | ||
6380 | \end_inset | ||
6381 | |||
6382 | /var/lib/mysql/mysql.sock | ||
6383 | \begin_inset Quotes erd | ||
6384 | \end_inset | ||
6385 | |||
6386 | for socket-based connections, whereas the | ||
6387 | \noun on | ||
6388 | LogSQLTCPPort | ||
6389 | \noun default | ||
6390 | command allows to you override the default TCP port of 3306 for TCP/IP | ||
6391 | connections. | ||
6392 | \layout Subsection | ||
6393 | |||
6394 | Why do I occasionally see a | ||
6395 | \begin_inset Quotes eld | ||
6396 | \end_inset | ||
6397 | |||
6398 | lost connection to MySQL server | ||
6399 | \begin_inset Quotes erd | ||
6400 | \end_inset | ||
6401 | |||
6402 | message in my error-log? | ||
6403 | \layout Standard | ||
6404 | |||
6405 | This message may appear every now and then in your Apache error log, especially | ||
6406 | on very lightly loaded servers. | ||
6407 | This doesn't mean that anything is necessarily wrong. | ||
6408 | Within each httpd child process, mod_log_sql will open (and keep open) | ||
6409 | a connection to the MySQL server. | ||
6410 | MySQL, however, will close connections that haven't been used in a while; | ||
6411 | the default timeout is 8 hours. | ||
6412 | When this occurs, mod_log_sql will notice and re-open the connection. | ||
6413 | That event is what is being logged, and looks like this: | ||
6414 | \layout LyX-Code | ||
6415 | |||
6416 | [Tue Nov 12 19:04:10 2002] [error] mod_log_sql: first attempt failed, | ||
6417 | \layout LyX-Code | ||
6418 | |||
6419 | API said: error 2013, Lost connection to MySQL server during query | ||
6420 | \layout LyX-Code | ||
6421 | |||
6422 | [Tue Nov 12 19:04:10 2002] [error] mod_log_sql: reconnect successful | ||
6423 | \layout LyX-Code | ||
6424 | |||
6425 | [Tue Nov 12 19:04:10 2002] [error] mod_log_sql: second attempt successful | ||
6426 | |||
6427 | \layout LyX-Code | ||
6428 | |||
6429 | \layout Standard | ||
6430 | |||
6431 | Reference: | ||
6432 | \begin_inset LatexCommand \url[MySQL documentation]{(http://www.mysql.com/documentation/mysql/bychapter/manual_Problems.html#Gone_away)} | ||
6433 | |||
6434 | \end_inset | ||
6435 | |||
6436 | |||
6437 | \layout Subsection | ||
6438 | |||
6439 | Does mod_log_sql work with Apache 2.x? | ||
6440 | \layout Standard | ||
6441 | |||
6442 | As of this writing, no. | ||
6443 | The Apache Group significantly altered the module API with the release | ||
6444 | of Apache 2.0. | ||
6445 | All modules written for 1.3, including mod_log_sql, will not work with 2.0. | ||
6446 | \layout Standard | ||
6447 | |||
6448 | mod_log_sql will eventually be ported to Apache 2.x, but not immediately. | ||
6449 | It is going to take some time, and there are other features that have higher | ||
6450 | priority. | ||
6451 | Please sign up for the announcements list (on the main website) or monitor | ||
6452 | the website for updates to learn when the port (and other releases) are | ||
6453 | available. | ||
6454 | \layout Standard | ||
6455 | |||
6456 | <OPINION>If you're a *NIX user, stick with Apache 1.3.x for now. | ||
6457 | Major modules like mod_ssl and PHP are not even ready for 2.0 yet, and the | ||
6458 | main benefits in 2.0 are for Win32 users anyway. | ||
6459 | Apache 1.3.x is rock-stable and performs equally well on *NIX as 2.0.</OPINION> | ||
6460 | \layout Subsection | ||
6461 | |||
6462 | I have discovered a bug. | ||
6463 | Who can I contact? | ||
6464 | \layout Standard | ||
6465 | |||
6466 | Please contact | ||
6467 | \begin_inset LatexCommand \url[the maintainer]{(chris@grubbybaby.com)} | ||
6468 | |||
6469 | \end_inset | ||
6470 | |||
6471 | ! Your comments, suggestions, bugfixes, bug catches, and usage testimonials | ||
6472 | are always welcome. | ||
6473 | As free software, mod_log_sql is intended to be a community effort -- any | ||
6474 | code contributions or other ideas will be fully and openly credited, of | ||
6475 | course. | ||
6476 | \the_end | 6859 | \the_end |