|
5 | 5 | # |
6 | 6 | # Translators: |
7 | 7 | # Rafael Fontenelle <rffontenelle@gmail.com>, 2025 |
| 8 | +# python-doc bot, 2025 |
8 | 9 | # |
9 | 10 | #, fuzzy |
10 | 11 | msgid "" |
11 | 12 | msgstr "" |
12 | 13 | "Project-Id-Version: Python 3.12\n" |
13 | 14 | "Report-Msgid-Bugs-To: \n" |
14 | | -"POT-Creation-Date: 2025-09-19 15:40+0000\n" |
| 15 | +"POT-Creation-Date: 2025-09-23 15:37+0000\n" |
15 | 16 | "PO-Revision-Date: 2025-07-18 19:57+0000\n" |
16 | | -"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>, 2025\n" |
| 17 | +"Last-Translator: python-doc bot, 2025\n" |
17 | 18 | "Language-Team: Polish (https://app.transifex.com/python-doc/teams/5390/pl/)\n" |
18 | 19 | "MIME-Version: 1.0\n" |
19 | 20 | "Content-Type: text/plain; charset=UTF-8\n" |
@@ -1775,6 +1776,100 @@ msgid "" |
1775 | 1776 | " q.put(None)\n" |
1776 | 1777 | " lp.join()" |
1777 | 1778 | msgstr "" |
| 1779 | +"import logging\n" |
| 1780 | +"import logging.config\n" |
| 1781 | +"import logging.handlers\n" |
| 1782 | +"from multiprocessing import Process, Queue\n" |
| 1783 | +"import random\n" |
| 1784 | +"import threading\n" |
| 1785 | +"import time\n" |
| 1786 | +"\n" |
| 1787 | +"def logger_thread(q):\n" |
| 1788 | +" while True:\n" |
| 1789 | +" record = q.get()\n" |
| 1790 | +" if record is None:\n" |
| 1791 | +" break\n" |
| 1792 | +" logger = logging.getLogger(record.name)\n" |
| 1793 | +" logger.handle(record)\n" |
| 1794 | +"\n" |
| 1795 | +"\n" |
| 1796 | +"def worker_process(q):\n" |
| 1797 | +" qh = logging.handlers.QueueHandler(q)\n" |
| 1798 | +" root = logging.getLogger()\n" |
| 1799 | +" root.setLevel(logging.DEBUG)\n" |
| 1800 | +" root.addHandler(qh)\n" |
| 1801 | +" levels = [logging.DEBUG, logging.INFO, logging.WARNING, logging.ERROR,\n" |
| 1802 | +" logging.CRITICAL]\n" |
| 1803 | +" loggers = ['foo', 'foo.bar', 'foo.bar.baz',\n" |
| 1804 | +" 'spam', 'spam.ham', 'spam.ham.eggs']\n" |
| 1805 | +" for i in range(100):\n" |
| 1806 | +" lvl = random.choice(levels)\n" |
| 1807 | +" logger = logging.getLogger(random.choice(loggers))\n" |
| 1808 | +" logger.log(lvl, 'Message no. %d', i)\n" |
| 1809 | +"\n" |
| 1810 | +"if __name__ == '__main__':\n" |
| 1811 | +" q = Queue()\n" |
| 1812 | +" d = {\n" |
| 1813 | +" 'version': 1,\n" |
| 1814 | +" 'formatters': {\n" |
| 1815 | +" 'detailed': {\n" |
| 1816 | +" 'class': 'logging.Formatter',\n" |
| 1817 | +" 'format': '%(asctime)s %(name)-15s %(levelname)-8s " |
| 1818 | +"%(processName)-10s %(message)s'\n" |
| 1819 | +" }\n" |
| 1820 | +" },\n" |
| 1821 | +" 'handlers': {\n" |
| 1822 | +" 'console': {\n" |
| 1823 | +" 'class': 'logging.StreamHandler',\n" |
| 1824 | +" 'level': 'INFO',\n" |
| 1825 | +" },\n" |
| 1826 | +" 'file': {\n" |
| 1827 | +" 'class': 'logging.FileHandler',\n" |
| 1828 | +" 'filename': 'mplog.log',\n" |
| 1829 | +" 'mode': 'w',\n" |
| 1830 | +" 'formatter': 'detailed',\n" |
| 1831 | +" },\n" |
| 1832 | +" 'foofile': {\n" |
| 1833 | +" 'class': 'logging.FileHandler',\n" |
| 1834 | +" 'filename': 'mplog-foo.log',\n" |
| 1835 | +" 'mode': 'w',\n" |
| 1836 | +" 'formatter': 'detailed',\n" |
| 1837 | +" },\n" |
| 1838 | +" 'errors': {\n" |
| 1839 | +" 'class': 'logging.FileHandler',\n" |
| 1840 | +" 'filename': 'mplog-errors.log',\n" |
| 1841 | +" 'mode': 'w',\n" |
| 1842 | +" 'level': 'ERROR',\n" |
| 1843 | +" 'formatter': 'detailed',\n" |
| 1844 | +" },\n" |
| 1845 | +" },\n" |
| 1846 | +" 'loggers': {\n" |
| 1847 | +" 'foo': {\n" |
| 1848 | +" 'handlers': ['foofile']\n" |
| 1849 | +" }\n" |
| 1850 | +" },\n" |
| 1851 | +" 'root': {\n" |
| 1852 | +" 'level': 'DEBUG',\n" |
| 1853 | +" 'handlers': ['console', 'file', 'errors']\n" |
| 1854 | +" },\n" |
| 1855 | +" }\n" |
| 1856 | +" workers = []\n" |
| 1857 | +" for i in range(5):\n" |
| 1858 | +" wp = Process(target=worker_process, name='worker %d' % (i + 1), " |
| 1859 | +"args=(q,))\n" |
| 1860 | +" workers.append(wp)\n" |
| 1861 | +" wp.start()\n" |
| 1862 | +" logging.config.dictConfig(d)\n" |
| 1863 | +" lp = threading.Thread(target=logger_thread, args=(q,))\n" |
| 1864 | +" lp.start()\n" |
| 1865 | +" # W tym momencie główny proces mógłby wykonać jakąś pożyteczną pracę " |
| 1866 | +"samodzielnie\n" |
| 1867 | +" # Gdy już to zrobi, może poczekać, aż pracownicy zakończą pracę...\n" |
| 1868 | +" for wp in workers:\n" |
| 1869 | +" wp.join()\n" |
| 1870 | +" # A teraz powiedz wątkowi rejestrującemu, żeby zakończył działanie\n" |
| 1871 | +" q.put(None)\n" |
| 1872 | +" lp.join()" |
1778 | 1873 |
|
1779 | 1874 | msgid "" |
1780 | 1875 | "This variant shows how you can e.g. apply configuration for particular " |
|
0 commit comments