aboutsummaryrefslogtreecommitdiff
path: root/contrib/epee/src/mlog.cpp (follow)
AgeCommit message (Collapse)AuthorFilesLines
2020-05-23rpc: don't display invalid json errors on default log levelmoneromooo-monero1-1/+1
It's not something the user needs to know, and will display attacker controlled data
2019-10-25daemon, wallet: new pay for RPC use systemmoneromooo-monero1-1/+1
Daemons intended for public use can be set up to require payment in the form of hashes in exchange for RPC service. This enables public daemons to receive payment for their work over a large number of calls. This system behaves similarly to a pool, so payment takes the form of valid blocks every so often, yielding a large one off payment, rather than constant micropayments. This system can also be used by third parties as a "paywall" layer, where users of a service can pay for use by mining Monero to the service provider's address. An example of this for web site access is Primo, a Monero mining based website "paywall": https://github.com/selene-kovri/primo This has some advantages: - incentive to run a node providing RPC services, thereby promoting the availability of third party nodes for those who can't run their own - incentive to run your own node instead of using a third party's, thereby promoting decentralization - decentralized: payment is done between a client and server, with no third party needed - private: since the system is "pay as you go", you don't need to identify yourself to claim a long lived balance - no payment occurs on the blockchain, so there is no extra transactional load - one may mine with a beefy server, and use those credits from a phone, by reusing the client ID (at the cost of some privacy) - no barrier to entry: anyone may run a RPC node, and your expected revenue depends on how much work you do - Sybil resistant: if you run 1000 idle RPC nodes, you don't magically get more revenue - no large credit balance maintained on servers, so they have no incentive to exit scam - you can use any/many node(s), since there's little cost in switching servers - market based prices: competition between servers to lower costs - incentive for a distributed third party node system: if some public nodes are overused/slow, traffic can move to others - increases network security - helps counteract mining pools' share of the network hash rate - zero incentive for a payer to "double spend" since a reorg does not give any money back to the miner And some disadvantages: - low power clients will have difficulty mining (but one can optionally mine in advance and/or with a faster machine) - payment is "random", so a server might go a long time without a block before getting one - a public node's overall expected payment may be small Public nodes are expected to compete to find a suitable level for cost of service. The daemon can be set up this way to require payment for RPC services: monerod --rpc-payment-address 4xxxxxx \ --rpc-payment-credits 250 --rpc-payment-difficulty 1000 These values are an example only. The --rpc-payment-difficulty switch selects how hard each "share" should be, similar to a mining pool. The higher the difficulty, the fewer shares a client will find. The --rpc-payment-credits switch selects how many credits are awarded for each share a client finds. Considering both options, clients will be awarded credits/difficulty credits for every hash they calculate. For example, in the command line above, 0.25 credits per hash. A client mining at 100 H/s will therefore get an average of 25 credits per second. For reference, in the current implementation, a credit is enough to sync 20 blocks, so a 100 H/s client that's just starting to use Monero and uses this daemon will be able to sync 500 blocks per second. The wallet can be set to automatically mine if connected to a daemon which requires payment for RPC usage. It will try to keep a balance of 50000 credits, stopping mining when it's at this level, and starting again as credits are spent. With the example above, a new client will mine this much credits in about half an hour, and this target is enough to sync 500000 blocks (currently about a third of the monero blockchain). There are three new settings in the wallet: - credits-target: this is the amount of credits a wallet will try to reach before stopping mining. The default of 0 means 50000 credits. - auto-mine-for-rpc-payment-threshold: this controls the minimum credit rate which the wallet considers worth mining for. If the daemon credits less than this ratio, the wallet will consider mining to be not worth it. In the example above, the rate is 0.25 - persistent-rpc-client-id: if set, this allows the wallet to reuse a client id across runs. This means a public node can tell a wallet that's connecting is the same as one that connected previously, but allows a wallet to keep their credit balance from one run to the other. Since the wallet only mines to keep a small credit balance, this is not normally worth doing. However, someone may want to mine on a fast server, and use that credit balance on a low power device such as a phone. If left unset, a new client ID is generated at each wallet start, for privacy reasons. To mine and use a credit balance on two different devices, you can use the --rpc-client-secret-key switch. A wallet's client secret key can be found using the new rpc_payments command in the wallet. Note: anyone knowing your RPC client secret key is able to use your credit balance. The wallet has a few new commands too: - start_mining_for_rpc: start mining to acquire more credits, regardless of the auto mining settings - stop_mining_for_rpc: stop mining to acquire more credits - rpc_payments: display information about current credits with the currently selected daemon The node has an extra command: - rpc_payments: display information about clients and their balances The node will forget about any balance for clients which have been inactive for 6 months. Balances carry over on node restart.
2019-09-24epee: misc_log_ex.h can now be used in C codemoneromooo-monero1-11/+25
use mfatal/merror/mwarning/minfo/mdebug/mtrace
2019-09-16Properly format multiline logsmoneromooo-monero1-1/+37
As a side effect, colouring on Windows should now work regardless of version
2019-05-06mlog: default to not showing SSL errorsmoneromooo-monero1-1/+1
2019-04-21serialization: set default log categorymoneromooo-monero1-1/+1
2018-12-08perf_timer: make all logs Info levelmoneromooo-monero1-1/+1
and make them not default at log level 1
2018-11-21blockchain_stats: don't use gmtime_r on Windowsmoneromooo-monero1-6/+2
In some cases, it doesn't like it (I don't know the details). Factor into a new epee function
2018-10-08ANSI colors in Windows 10iDunk54001-0/+35
2018-09-29Merge pull request #4459Riccardo Spagni1-1/+6
bcf3f6af fuzz_tests: catch unhandled exceptions (moneromooo-monero) 3ebd05d4 miner: restore stream flags after changing them (moneromooo-monero) a093092e levin_protocol_handler_async: do not propagate exception through dtor (moneromooo-monero) 1eebb82b net_helper: do not propagate exceptions through dtor (moneromooo-monero) fb6a3630 miner: do not propagate exceptions through dtor (moneromooo-monero) 2e2139ff epee: do not propagate exception through dtor (moneromooo-monero) 0749a8bd db_lmdb: do not propagate exceptions in dtor (moneromooo-monero) 1b0afeeb wallet_rpc_server: exit cleanly on unhandled exceptions (moneromooo-monero) 418a9936 unit_tests: catch unhandled exceptions (moneromooo-monero) ea7f9543 threadpool: do not propagate exceptions through the dtor (moneromooo-monero) 6e855422 gen_multisig: nice exit on unhandled exception (moneromooo-monero) 53df2deb db_lmdb: catch error in mdb_stat calls during migration (moneromooo-monero) e67016dd blockchain_blackball: catch failure to commit db transaction (moneromooo-monero) 661439f4 mlog: don't remove old logs if we failed to rename the current file (moneromooo-monero) 5fdcda50 easylogging++: test for NULL before dereference (moneromooo-monero) 7ece1550 performance_test: fix bad last argument calling add_arg (moneromooo-monero) a085da32 unit_tests: add check for page size > 0 before dividing (moneromooo-monero) d8b1ec8b unit_tests: use std::shared_ptr to shut coverity up about leaks (moneromooo-monero) 02563bf4 simplewallet: top level exception catcher to print nicer messages (moneromooo-monero) c57a65b2 blockchain_blackball: fix shift range for 32 bit archs (moneromooo-monero)
2018-09-14mlog: do not display http errors by defaultmoneromooo-monero1-1/+1
They're controllable by potential attackers and would just spam
2018-07-26mlog: handle filenames without parent directoriesmoneromooo-monero1-1/+3
eg, --log-file=foo.log This would otherwise throw and crash with a stack overflow
2018-06-25Merge pull request #3972luigi11111-1/+2
8766528 epee: fallback to a counter if gmtime fails when rotating logs (moneromooo-monero)
2018-06-13mlog: --max-log-files to set the max number of rotated log filesstoffu1-2/+51
2018-06-09epee: fallback to a counter if gmtime fails when rotating logsmoneromooo-monero1-1/+2
2018-04-25mlog: fix setting no logsmoneromooo-monero1-1/+6
2017-12-18mlog: terminate a string at last char, just in casemoneromooo-monero1-0/+1
2017-12-16move includes around to lessen overall loadmoneromooo-monero1-0/+4
2017-10-07frob level 1 logs a bit for consistencymoneromooo-monero1-1/+1
Level 1 logs map to INFO, so setting log level to 1 should show these. Demote some stuff to DEBUG to avoid spam, though.
2017-10-02Merge pull request #2512Riccardo Spagni1-4/+40
792ba4f0 Log categories can now be added to and removed from (moneromooo-monero) 48f92eb6 easylogging++: add categories getter (moneromooo-monero) f35afe62 epee: factor log level/categories setting (moneromooo-monero)
2017-09-22Log categories can now be added to and removed frommoneromooo-monero1-2/+39
Also, set_log without parameters now prints the log categories
2017-09-22epee: factor log level/categories settingmoneromooo-monero1-2/+1
2017-09-17daemon, wallet: add --max-log-file-size optionselsta1-2/+2
2017-08-15Tweak net logs so we get more info on why networking can't startmoneromooo-monero1-1/+1
This should prevent "silent" failures to start
2017-08-07Merge pull request #2189Riccardo Spagni1-1/+1
335fc8ab mlog: fix crash accessing stale data when rotating logs (moneromooo-monero)
2017-07-24mlog: default to msgwriter logs only for log level 1moneromooo-monero1-1/+1
There might be privacy issues doing it by default
2017-07-22mlog: fix crash accessing stale data when rotating logsmoneromooo-monero1-1/+1
2017-07-19Merge pull request #2173Riccardo Spagni1-1/+1
a02d7458 mlog: make MONERO_LOGS env var understand N,logs type spec (moneromooo-monero)
2017-07-15mlog: make MONERO_LOGS env var understand N,logs type specmoneromooo-monero1-1/+1
2017-07-06mlog: add msgwriter:INFO to log 0 and 1 defaultsmoneromooo-monero1-2/+2
This ensures command output gets logged by default
2017-05-17shared libs build (i.e. make debug)stoffu1-2/+0
2017-04-01mlog: direct log category changes to file onlymoneromooo-monero1-4/+9
Because some people just won't even try to read what is written and freak out because the word FATAL is in here, despite the context making it clear it's not an error.
2017-03-19Revert "Increase the log level for the info about log levels"moneromooo-monero1-2/+2
We want to know which log categories are active. This reverts commit 4f7bce6d20c72a1384289f7c35b7fe0ee796ed41.
2017-03-03Merge pull request #1805Riccardo Spagni1-1/+1
b7f85a30 mlog: default net.cn to FATAL (moneromooo-monero)
2017-02-26mlog: default net.cn to FATALmoneromooo-monero1-1/+1
Errors in this layer depend on how peers behave, and thus errors are expected
2017-02-25Increase the log level for the info about log levelsNano Akron1-2/+2
2017-02-21mlog: restrict net.p2p to FATAL by defaultmoneromooo-monero1-1/+1
2017-02-20mlog: only silence errors for net by default, not net.*moneromooo-monero1-1/+1
2017-02-12mlog: move log level changes to global levelmoneromooo-monero1-2/+2
Makes it more likely to show up
2017-02-12mlog: s/Mew/New/ in logmoneromooo-monero1-2/+2
2017-02-04Merge pull request #1670Riccardo Spagni1-1/+6
c3d7a198 mlog: probable fix for gmtime_r not being available on windows (moneromooo-monero)
2017-02-04mlog: fix default logging being not verbose enoughmoneromooo-monero1-27/+27
2017-02-04mlog: probable fix for gmtime_r not being available on windowsmoneromooo-monero1-1/+6
2017-01-22mlog: allow using numerical level as default prefixmoneromooo-monero1-25/+37
eg, 2,foo:ERROR,bar:INFO
2017-01-22Merge pull request #1613Riccardo Spagni1-2/+2
13dd102e mlog: fix default level/category mapping (moneromooo-monero)
2017-01-22Merge pull request #1604Riccardo Spagni1-2/+2
a854cec3 Make stack trace show up in log file with default settings (moneromooo-monero)
2017-01-22mlog: fix default level/category mappingmoneromooo-monero1-2/+2
It was not matching the LOG_PRINT_Lx mapping for 2/3/4
2017-01-21Make stack trace show up in log file with default settingsmoneromooo-monero1-2/+2
2017-01-16mlog: allow overriding log formatmoneromooo-monero1-2/+4
using the MONERO_LOG_FORMAT environment variable. Default is: %datetime{%Y-%M-%d %H:%m:%s.%g}\t%thread\t%level\t%logger\t%loc\t%msg Field list in easylogging++ documentation. Don't forget to escape as needed.
2017-01-16Change logging to easylogging++moneromooo-monero1-0/+319
This replaces the epee and data_loggers logging systems with a single one, and also adds filename:line and explicit severity levels. Categories may be defined, and logging severity set by category (or set of categories). epee style 0-4 log level maps to a sensible severity configuration. Log files now also rotate when reaching 100 MB. To select which logs to output, use the MONERO_LOGS environment variable, with a comma separated list of categories (globs are supported), with their requested severity level after a colon. If a log matches more than one such setting, the last one in the configuration string applies. A few examples: This one is (mostly) silent, only outputting fatal errors: MONERO_LOGS=*:FATAL This one is very verbose: MONERO_LOGS=*:TRACE This one is totally silent (logwise): MONERO_LOGS="" This one outputs all errors and warnings, except for the "verify" category, which prints just fatal errors (the verify category is used for logs about incoming transactions and blocks, and it is expected that some/many will fail to verify, hence we don't want the spam): MONERO_LOGS=*:WARNING,verify:FATAL Log levels are, in decreasing order of priority: FATAL, ERROR, WARNING, INFO, DEBUG, TRACE Subcategories may be added using prefixes and globs. This example will output net.p2p logs at the TRACE level, but all other net* logs only at INFO: MONERO_LOGS=*:ERROR,net*:INFO,net.p2p:TRACE Logs which are intended for the user (which Monero was using a lot through epee, but really isn't a nice way to go things) should use the "global" category. There are a few helper macros for using this category, eg: MGINFO("this shows up by default") or MGINFO_RED("this is red"), to try to keep a similar look and feel for now. Existing epee log macros still exist, and map to the new log levels, but since they're used as a "user facing" UI element as much as a logging system, they often don't map well to log severities (ie, a log level 0 log may be an error, or may be something we want the user to see, such as an important info). In those cases, I tried to use the new macros. In other cases, I left the existing macros in. When modifying logs, it is probably best to switch to the new macros with explicit levels. The --log-level options and set_log commands now also accept category settings, in addition to the epee style log levels.