Зап сахара столица: ЗАПАДНАЯ САХАРА | Энциклопедия Кругосвет
Западная Сахара балансирует на грани войны / В мире / Независимая газета
Фото Reuters
После почти 30 лет относительного затишья резко обострилась обстановка в Западной Сахаре. Подразделения марокканской армии вошли в буферную зону и приступили к установке кордона безопасности. Цель операции – разблокировать дорогу, перекрытую западносахарскими ополченцами в конце октября, и восстановить свободное перемещение товаров и людей между Мавританией и Марокко. Глава самопровозглашенной Сахарской Арабской Демократической республики (САДР) и генеральный секретарь фронта ПОЛИСАРИО (Народный фронт освобождения Сегиет-эль-Хамра и Рио-де-Оро) Брахим Гали заявил о выходе из соглашения о перемирии между Марокко и этой организацией, подписанного в 1991 году.
Один из руководителей фронта ПОЛИСАРИО, Мухаммед Салем Ульд Салек обвинил власти Марокко в нарушении режима прекращения огня и разжигании войны в регионе. Кроме того, он заявил, что его организация, равно как и администрация САДР, утратили доверие к генеральному секретарю ООН Антониу Гутерришу, поскольку недавно подготовленный им доклад не соответствует букве и духу совместного плана ООН и Африканского союза (АС) по урегулированию конфликта в Западной Сахаре.
Агентство AFP приводит слова другого представителя фронта ПОЛИСАРИО, Сиди Мухаммеда Омара, который считает, что доклад Гутерриша создает ложное впечатление спокойной ситуации, хотя в действительности в регионе царит хаос. Он утверждает, что марокканские власти грубо нарушают права человека на оккупированных территориях, прибегая к похищениям, пыткам и убийствам функционеров ПОЛИСАРИО и САДР.
В свою очередь, представители Марокко говорят, что начатая Рабатом операция не носит наступательного характера и осуществляется без каких-либо агрессивных намерений. Глава МИДа Насер Бурита опроверг появившиеся в СМИ сообщения о вооруженных столкновениях с бойцами Западной Сахары, заявляя о том, что марокканские силы ограничиваются лишь предупредительными выстрелами.
Обстановка в регионе начала обостряться с начала нынешнего года – после того как правительство Кот-д’Ивуара, а вслед за ним еще несколько небольших африканских государств, в том числе Габон, Коморские Острова, а также Сан-Томе и Принсипи, приняли решение об открытии своих консульств в Эль-Айюне, небольшом городке, на который претендует САДР. В Западной Сахаре такие шаги были восприняты как вопиющие нарушения международного права, резолюций ООН и ее Генеральной Ассамблеи по вопросу о деколонизации Западной Сахары.
Протест САДР был поддержан Алжиром, традиционным спонсором ПОЛИСАРИО, который пошел даже на отзыв своего посла из Кот-д’Ивуара, Намибией и рядом других африканских стран, признавших независимость САДР. Сыграло свою роль и то обстоятельство, что Рабат еще в 1984 году вышел из АС и вплоть до 2017 года оставался вне этой организации. Главной причиной выхода из АС послужило несогласие марокканцев с позицией большинства африканских стран, признавших САДР. Однако, оставаясь вне рамок АС, Марокко лишало себя возможности отстаивать свои интересы с трибуны этой представительной организации.
На этот раз АС призывает стороны к сдержанности, избегая резких заявлений в адрес Марокко. К этому же призывают и арабские страны. Правда, при этом они, во-первых, выражают поддержку Марокко, а во-вторых, призывы к сдержанности адресуются не только марокканцам и западносахарцам, но еще и алжирцам, чьи отношения с Рабатом характеризуются как весьма прохладные. Опасность конфликта в Западной Сахаре в том, что новая война может не только опалить Марокко и САДР, но и перекинуться на Алжир.
В такой ситуации, когда африканские страны и арабский мир охватила серьезная обеспокоенность в связи с событиями в Западной Сахаре, инициативу выступить в роли посредника-миротворца, похоже, берет на себя Египет. Глава египетского МИДа Самех Шукри звонил своим коллегам Сабри Букадуму в Алжир и Насеру Бурите в Марокко, призывая их страны воздержаться от дальнейшей эскалации. Европа, за исключением Франции, имеющей здесь особые интересы, пока что большой озабоченности не выразила.
Напомним, что в 1975 году Испания отказалась от своей колонии на северо-западном побережье Африки. В борьбу за нее вступили Мавритания, Марокко и фронт ПОЛИСАРИО. Через год объявили о создании САДР. Немного погодя отказалась по причине крайней бедности от претензий на Западную Сахару Мавритания. Марокканцы воевали с бойцами ПОЛИСАРИО вплоть до 1991 года, пока в соответствии с резолюцией 960 СБ ООН не подписали соглашение о прекращении огня и проведении референдума. Он и должен был решить судьбу территории. Однако референдум все время переносится, так как до сих пор никто не может разобраться с избирательными правами обитающих здесь людей.
Пока всенародное волеизъявление не состоялось, за порядком здесь присматривает спецмиссия ООН по наблюдению за референдумом в Западной Сахаре (ООНРЗС). В миссии, вполне себя успешно проявившей, с самого ее начала в 1991 году служат российские военные наблюдатели ООН. За эти без малого 30 лет через нее прошло свыше 500 наших офицеров.
США, большая часть Европы и арабского мира отдают право на Западную Сахару Марокко. Россия, Германия, большинство африканских стран и Алжир считают эту территорию недеколонизированной страной, будущее которой еще предстоит решить. Тем не менее де-факто САДР уже признали 84 государства.
погода и климат в Западной Сахаре
Западная Сахара – спорная территория в северной части африканского материка, чьи права подлежат урегулированию со стороны ООН. Общая площадь 266 800 км². С 1976 по 1979 длилась аннексия территорий, которые на сегодняшний день принадлежат Марокко. В прошлом страна была известна как Испанская Сахара. На севере проходит граница с Марокко, на северо-востоке – с Алжиром, на востоке и юге граничит с Мавританией. Западные берега омывается водами Атлантического океана. Столица Эль-Аюн.
Огромные территории Западной Сахары занимают развеваемые ветрами пески и дюны, и всего 4% приходится на оазисы. Наивысшая точка достигает 823 м над уровнем моря. Постоянных рек на территории страны нет, но во время сезона дождей появляются временные: Сабалера, Эль-Фуш и другие.
Западная Сахара расположена в полосе сухого тропического климата, для которого характерны высокие температуры и частые перепады суточных показателей. Почва днем может прогревается до +65°С, остывая за ночь до 0°С. Осадки в течение года скудные, 50-200 мм. Океанический атмосферный фронт часто приносит туман и понижение температур. Смерчи и песчаные бури – явление довольно распространенное. В центре страны климат пустынный и жаркий, со средними температурами +25°С…+30°С. На побережье показатели более комфортные: +17°С…+20°С.
Для туристов представляет интерес столица Эль-Аюн. Здесь находятся не только памятки архитектуры, но и заповедник со множеством птиц. Чтобы путешествие прошло максимально комфортно, обратите внимание на погоду по месяцам.
Погода в Западной Сахаре в январе
В январе на побережье Атлантического океана вода прогрета до +17°С. Этот месяц один из самых холодных в году. В Эль-Аюне средние температуры варьируются от +22,5°С днем до +15,5°С ночью. В январе на территории столицы выпадает до 4 мм росы, ветер дует со скоростью 6 м/с. Световой день длится 9 часов. Уровень влажности 65%. Средние температуры в стране не превышают +16°С.
Погода в Западной Сахаре в феврале
В феврале на территории страны в среднем 20 ясных и 10 облачных дней. Средние температуры держатся на отметке +16°С. Уровень влажности 71%. В столице днем +22°С, ночью +15°С. Температура на побережье опускается до +16°С. Ветер дует со скоростью 6,5 м/с. Осадки скудные, за ночь выпадает 5,5 мм росы.
Погода в Западной Сахаре в марте
В марте среднесуточные температуры начинают повышаться. В среднем температура в стране не ниже +17,4°С. В столице воздух прогревается до +24,7°С днем, до +16,6°С ночью. Осадки крайне скудные – 3,4 мм. Температура воды на побережье Атлантического океана +16,9°С. Ветер дует со скоростью 6,5 м/с. Влажность опускается до 66%.
Погода в Западной Сахаре в апреле
В апреле показатели мало отличаются от мартовских, среднесуточные температуры продолжают повышаться. Днем в столице воздух прогревается до +26°С, ночью охлаждается до +17°С. В этом месяце за ночь выпадает до 3 мм росы. Температура воды на побережье океана прогревается до +17,5°С. Ветер дует со скоростью 6,5 м/с. Влажность воздуха 67%. В среднем в стране до +19°С тепла.
Погода в Западной Сахаре в мае
В мае вода в океане прогревается до +18°С, влажность повышается до 68%. В столице Эль-Аюн температура воздуха днем +27,8°С, ночью +18,5°С. Осадки крайне скудные – до 1,5 мм. Средняя скорость ветра в столице 7,5 м/с. В среднем температура воздуха в стране не ниже +20,5°С.
Погода в Западной Сахаре в июне
Июнь считается одним из самых солнечных и ветреных месяцев в году. Среднесуточные показатели воздуха по стране варьируются в пределах +20,5°С. Порывы ветра достигают 7,8 м/с. Средняя влажность воздуха 68%. В столице световой день достигает максимума и длится 12 часов. За это время воздух прогревается до +29°С, остывая в темное время суток до +18,5°С. Вода в океане бодрящая: +18°С. В июне выпадает минимальное количество осадков, которое не превышает 1 мм.
Погода в Западной Сахаре в июле
Самый теплый, самый солнечный и самый ветреный – это месяц июль. Среднесуточные показатели воздуха достигают +22,7°С. Ветер дует со скоростью 8,6 м/с. Влажность воздуха около 70%. В столице световой день длится 12 часов. За это время воздух прогревается до +31,8°С днем, остывая ночью до +20,6°С. Самые смелые могут искупаться в океане, где вода +19°С. Осадков в этом месяце выпадает до 2,5 мм.
Погода в Западной Сахаре в августе
В августе тоже жарко, солнечно и ветрено. В среднем в стране до +24°С тепла. В столице температура варьируется от +33,5 днем до +22°С ночью. Порывы ветра достигают 8,2 м/с, влажность воздуха 69%. Световой день начинает убывать, количество солнечных часов в столице чуть больше 11. Вода в океане прогревается до +19,5°С. За один дождливый день может выпасть 11,5 мм осадков.
Погода в Западной Сахаре в сентябре
В сентябре вода на побережье прогревается до комфортной температуры +20,2°С.Среднесуточные показатели воздуха по стране составляют +23,9°С. Ветер дует со скоростью 6,8 м/с. Средняя влажность воздуха 71%. В столице световой день продолжает убывать и составляет 10 часов и 30 минут. Воздух в Эль-Аюне прогревается до +30,7°С днем, остывая ночью до +21,8°С. В сентябре всего один дождливый день, осадков выпадает до 13,5 мм.
Погода в Западной Сахаре в октябре
В октябре вода на побережье достигает максимальных показателей +20,5°С. Среднесуточные температуры воздуха постепенно понижаются: в среднем в стране +22,9°С тепла. Влажность воздуха 71%. В столице днем +29,4°С, ночью 21,8°С. Один дождливый день приносит 9 мм осадков. Октябрь считается самым безветренным в году: средние показатели силы ветра не превышают 5,5м/с.
Погода в Западной Сахаре в ноябре
В ноябре вода в океане еще подходит для купания: +19,8°С. Средняя влажность воздуха в стране достигает максимальных показателей 72%. За один дождливый день в столице выпадает 16,5 мм осадков, световой день длится около 9 часов. За это время воздух прогревается до +26,3°С днем, остывая ночью до +19,7°С. Средняя скорость ветра 6 м/с.
Погода в Западной Сахаре в декабре
Как все три зимних месяца, декабрь относится к наиболее холодным в году. Средние температуры днем опускаются до +17,9°С. В столице днем +23,8°С, ночью +17,5°С. За месяц выпадает до 3 мм осадков. В декабре самая низкая влажность, не превышающая 51%, ветер слабый, до 6 м/с.
Технических ветеранов получает 4 миллиона долларов на разработку роботов на солнечных батареях, которые уничтожают сорняки и регенерируют почву — GeekWire
Прототип робота Aigen для прополки и улучшения почвы. (Фото Aigen)
Новое финансирование: Aigen, стартап, разрабатывающий роботов на солнечных батареях для борьбы с сорняками и регенерации почвы, привлек 4 миллиона долларов венчурного капитала. Посевной раунд проводился NEA при участии AgFunder, Global Founders Capital и ReGen Ventures. Агротехнологическая компания из Киркленда, штат Вашингтон, начала работу в 2020 году.
Основатели: Соучредитель Рич Уорден был одним из первых инженеров сиэтлской Pure Watercraft, компании по производству электрических лодок, в которой General Motors недавно приобрела долю и оценивается в 600 миллионов долларов. После этого Вурден пять лет работал инженером-механиком в Tesla, а в 2018 году вернулся в Pure Watercraft еще на два года.
Соучредитель Кенни Ли имеет опыт работы в области кибербезопасности и является соучредителем стартапа, приобретенного в 2017 году.
Они познакомились через сообщество Slack под названием Work on Climate. В компании пять сотрудников, и к концу года она может утроить штат.
Технология: Aigen создает небольших роботов, которые используют искусственный интеллект для автономной навигации по рядам сельскохозяйственных культур, а также для выявления и удаления нежелательных сорняков с помощью механических рук. ИИ можно научить оставлять безвредные сорняки, которые помогают удерживать углерод. По словам основателей, поскольку вегетационный период совпадает с солнечным светом, солнечная энергия является жизнеспособным источником энергии. Роботы несут батареи для дополнительной мощности.
Команда тестирует свой прототип на фермерах, выращивающих сахарную свеклу, в Айдахо. Они начнут альфа-тестирование новых устройств в конце этого года и перейдут к бета-тестированию с первыми клиентами в 2023 году. и соучредитель Aigen Кенни Ли. (Aigen Photo)
Конкурс: В космосе есть похожие стартапы, в том числе Carbon Robotics, которая развертывает более крупные роботизированные машины, уничтожающие сорняки с помощью лазеров. Компания из Сиэтла привлекла 36 миллионов долларов с момента запуска в 2018 году.0005
В то время как машина Carbon Robotics может обрабатывать 16 акров в день по сравнению с тремя акрами Aigen, роботы от Aigen весят меньше и не уплотняют почву, а также не производят дополнительных выбросов углерода благодаря солнечной энергии, говорится в сообщении компании. . Робот Айгена будет дешевле.
Результат: Хотя первоначальные прототипы ориентированы на сорняки, целью является создание устройства, которое может собирать данные о различных параметрах, включая идентификацию насекомых и болезней, а также измерение содержания питательных веществ и углерода в почве. Измерение уровня углерода может помочь фермерам заработать дополнительные деньги, продавая углеродные компенсации, если они смогут надежно рассчитать количество улавливаемого углерода.
Wurden переключился с электромобилей на сельскохозяйственные технологии из-за огромных возможностей для улучшения климата. По его словам, в дополнение к устранению выбросов углерода «с сельским хозяйством у вас есть потенциал стать углеродно-отрицательным».
Добавление Uber-go Zap Logger в проект GoLang. – Мой журнал разработчиков
В этом блоге содержится информация о том, как добавить регистратор Uber-go Zap в проект Golang
Этот блог является частью серии Golang.
- 1.0 Введение
- 2.0 Go Logger по умолчанию
- 2.1 Внедрение Go Logger
- 2.2 Плюсы и минусы Go Logger
- 3.0 Uber-go Zap
- 3.1 Почему Uber-go Zap
- 3.2 Установка
- 3.3 Настройка Zap Logger
- 3.4 Настройка регистратора
- 4.0 Ротация бревен с помощью Lumberjack
- 4.1 Установка
- 4.2. Добавление поддержки дровосека в zap logger
- 4.3 Проверка всего вместе
Во многих проектах Golang нам нужна хорошая опция регистратора, которая предоставляет некоторые из следующих опций
- Возможность записи событий в файл, а не в консоль приложения.
- Ротация журналов — возможность ротации файлов журналов в зависимости от размера файла, времени или интервала и т. д.
- Поддержка различных уровней журналов. например, INFO, DEBUG, ERROR и т. д.
- Должна быть напечатана основная информация, такая как вызываемое имя файла/функции и номер строки, время журнала и т. д.
Прежде чем мы перейдем к Zap-пакету Uber-go, давайте сначала рассмотрим базовые функции ведения журнала, которые предоставляет Golang из коробки.
Пакет ведения журнала по умолчанию, предоставляемый Golang, находится по адресу https://golang.org/pkg/log/
2.1. Внедрение Go Logger
. Внедрение средства ведения журнала Golang очень просто: создайте новый файл журнала и установите его в качестве места вывода журнала. .
2.1.1 Настройка регистратора
Мы можем настроить регистратор, как показано ниже
Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован иначе, чем показано ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode.
Узнайте больше о двунаправленных символах Unicode
Показать скрытые символы
просмотреть необработанные данные
SetupLogger.go
размещено на ❤ GitHub
2.1.2 Использование регистратора
Давайте напишем некоторый фиктивный код, который будет использовать регистратор.
В нашем текущем примере мы создадим HTTP-соединение с URL-адресом и зарегистрируем либо код состояния, либо ошибку в файле журнала.
Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован иначе, чем показано ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode.
Узнать больше о двунаправленных символах Unicode
Показать скрытые символы
просмотреть необработанные данные
SimpleHttpGet.go
размещено с помощью ❤ на GitHub
2.1.3 Регистратор в действии
Теперь давайте выполним приведенный выше код и посмотрим, как работает регистратор.
основная функция () { Сеталоггер() простойHttpGet("www. google.com") простойHttpGet("http://www.google.com") }
Когда мы выполняем приведенный выше код, мы можем увидеть 9Создан 0208 test.log , и в файл журнала добавлены следующие строки.
24.05.2019 01:14:13 Ошибка при получении URL-адреса www.google.com : Получить www.google.com: неподдерживаемая схема протокола "" 24.05.2019 01:14:14 Код состояния для http://www.google.com: 200 OK
2.2 Плюсы и минусы Go Logger
2.2.1 Плюсы
Самые большие преимущества в том, что он очень прост в использовании. Мы можем настроить любой io.Writer
для вывода журнала и отправки журналов записи на него.
2.2.2 Минусы
- Только базовые уровни журнала
- Только один параметр для
Печать
. Не поддерживает несколько уровней, таких какINFO
/DEBUG
.
- Только один параметр для
- Для ведения журнала ошибок он имеет
Fatal
иPanic
- Fatal Logging завершает программу, вызывая
os. Exit(1)
- Panic Logging после записи сообщений журнала паники выдает
.
- Однако ему не хватает уровня журнала
ERROR
, который может регистрировать ошибки без паники или выхода из программы.
- Fatal Logging завершает программу, вызывая
- Отсутствуют возможности форматирования сообщений журнала — например, регистрация имени функции вызывающего абонента и номера строки, форматирование формата даты и времени и т. д.
- Не обеспечивает возможности ротации журнала.
Top ∆
Zap — это молниеносно быстрая, структурированная, уровневая регистрация в Go.
3.1 Почему Uber-go zap
- Обеспечивает как структурированное ведение журнала, так и ведение журнала в стиле printf
- Предполагается, что он очень быстрый.
Согласно документации Uber-go Zap, он более эффективен, чем сопоставимые пакеты структурированного ведения журналов, а также быстрее, чем стандартная библиотека.
Ниже приведена информация о сравнительном анализе, опубликованная ZAP
. ALLOCS/OP 1111111111111111111111111111111111111111111111111111111111111111111111.0108 Регистрация статической строки, без какого -либо контекста или 2 Установка Установка ZAP Пакет. zap Zap предлагает два типа регистраторов — В случаях, когда производительность хорошая, но не критическая, используйте В случаях, когда важны каждая микросекунда и каждое выделение, используйте Logger. Он даже быстрее, чем SugaredLogger, и выделяет гораздо меньше памяти, но поддерживает только строго типизированное структурированное ведение журнала. Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован иначе, чем приведенный ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode. Показать скрытые символы view raw Uber-GoZap — BasicLogger.go размещено на ❤ на GitHub В приведенном выше коде мы сначала создали Logger, а затем регистрировали сообщения, используя методы Logger, такие как Info/Error. Синтаксис методов логгера такой. где, Если мы запустим приведенный выше код, он будет генерировать следующий вывод 3.2 Sugared Logger Теперь давайте реализуем то же самое, используя Sugared Logger. Ниже приведен измененный код для использования Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован иначе, чем показано ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode. Показать скрытые символы просмотреть необработанные данные Uber-GoZap – SugarLogger 01.go размещено на ❤ от GitHub Когда вы запустите приведенный выше код, вы увидите следующий вывод Как вы можете заметить, оба регистратора до сих пор печатали вывод только в структурированном формате JSON. В более поздней части этого блога мы рассмотрим SugaredLogger более подробно и посмотрим, как мы можем настроить его дальше. Первое изменение, которое мы хотим сделать, это запись в файл вместо консоли приложения. 1. Encoder : Кодировщик (как будут записываться логи). Мы будем использовать готовый 2. WriterSyncer — указывает, куда будут записываться журналы. Мы 3. Уровень лога , на котором будут записываться логи. Мы изменим код регистратора из приведенного выше раздела и перепишем метод https://gist.github.com/chatterjeesunit/4ca0daaddf658aa3a7cea30b33bc1887 Когда функция Теперь мы хотим изменить кодировщик с кодировщика JSON на обычный кодировщик. Для этого нам нужно изменить Когда функция С изменением, которое мы внесли в конфигурации, возникли две проблемы. Первое, что мы делаем, это переопределяем значение по умолчанию Далее мы изменим код регистратора zap, чтобы добавить функциональность для регистрации информации о вызывающей функции. Для этого мы добавим Когда функция Единственная вещь, которой не хватает в этом логгере, это функция ROTATION LOG. Zap изначально не поддерживает чередование файлов журналов Чтобы добавить функцию ротации журналов, мы добавим поддержку Lumberjack в Logger. Чтобы установить Lumberjack, мы выполним следующую команду Чтобы добавить поддержку Lumberjack в Zap, нам нужно изменить код Lumberjack Logger принимает следующие атрибуты в качестве входных данных После всех вышеуказанных изменений код регистратора Zap/Lumberjack будет выглядеть примерно так. Этот файл содержит двунаправленный текст Unicode, который может быть интерпретирован или скомпилирован не так, как показано ниже. Для просмотра откройте файл в редакторе, который показывает скрытые символы Unicode. Показать скрытые символы просмотреть необработанные данные Uber-GoZap — SugarLogger — Custom02.go размещено с помощью ❤ на GitHub При выполнении приведенного выше кода в выходном файле будут отображаться следующие журналы — test.log ⚡ ZAP (SUGARED) 4173 NS/OP 21 ALLOC/OP Zerolog 16154 NS/OP lion 16341 ns/op 111 allocs/op go-kit 17049 ns/op 126 allocs/op logrus 23662 ns/op 142 allocs/ ОП Printf
-Стиль.0112 ⚡️ zap 361 ns/op 0 allocs/op ⚡️ zap (sugared) 534 ns/op 2 allocs/op zerolog 323 ns/ op 0 allocs/op standard library 575 ns/op 2 allocs/op go-kit 922 ns/op 13 allocs/op lion 1413 нс/оп 10 ALLOCS/OP LOGRUS 2291 NS/OP 27 ALLOCS/OP 3.
3.3 Настройка Zap Logger
Sugared Logger
и Logger
. SugaredLogger
. Это в 4-10 раз быстрее, чем другие пакеты структурированного ведения журнала, и поддерживает как структурированное ведение журнала, так и ведение журнала в стиле printf. 3.3.1 Регистратор
zap.NewProduction()
/ zap.NewDevelopment()
или zap.Example()
Узнайте больше о двунаправленных символах Unicode var logger *zap.Logger функция main() { ИнитЛоггер() отложить logger. Sync() SimpleHttpGet("www.google.com") SimpleHttpGet("http://www.google.com") } функция InitLogger() { Регистратор , _ = zap.NewProduction() } функция SimpleHttpGet (строка URL-адреса) { соответственно, ошибка := http.Get(url) если ошибка != ноль { регистратор.Ошибка( «Ошибка получения URL-адреса. .», zap.String("url", url), зап.Ошибка(ошибка)) } еще { logger.Info("Успех..", zap.String("statusCode", соотв.Статус), zap.String("url", url)) или Тело.Закрыть() } } func (log *Logger) MethodXXX (строка сообщения, поля ... поле)
MethodXXX
- это функция Variadic, которая может быть Info / Error / Debug / Panic и т. д. Каждый из этих методов принимает строка сообщения и любое число zapcore.Field
аргументов.
Каждый zapcore.Field
представляет собой не что иное, как набор аргументов ключ/значение. {"level":"error","ts":1558882294.406781,"caller":"basiclogger/UberGoLogger.go:26","msg":" Ошибка получения URL-адреса..","url":"www.google.com","error":"Получить www.google.com: неподдерживаемая схема протокола"","stacktrace":"main.SimpleHttpGetnt/Users/in -sunit.chatterjee/learn/GitHub/go/src/LearningGo/examples/logger/basiclogger/UberGoLogger.go:26nmain.mainnt/Users/in-sunit.chatterjee/learn/GitHub/go/src/LearningGo/examples/logger /basiclogger/UberGoLogger.go:13nruntime.mainnt/usr/local/go/src/runtime/proc.go:201"}
{"уровень":"информация","тс":1558882294.665447,"вызывающий":"basiclogger/UberGoLogger.go:31","msg":"Успешно..","statusCode":"200 OK","url":"http://www.google.com" }
3.
SugaredLogger
из главного регистратора, вызывая для него метод .Sugar()
. SugaredLogger
для регистрации операторов в printf
style SugaredLogger
вместо Logger
.
Узнайте больше о двунаправленных символах Unicode go">
переменная сахараLogger *zap.SugaredLogger функция main() { ИнитЛоггер() отложить SugarLogger.Sync() SimpleHttpGet("www.google.com") SimpleHttpGet("http://www.google.com") } функция InitLogger() { регистратор, _ := zap.NewProduction() SugarLogger = регистратор.Sugar() } функция SimpleHttpGet (строка URL-адреса) { сахараLogger. Debugf("Попытка выполнить запрос GET для %s", url) соответственно, ошибка := http.Get(url) если ошибка != ноль { SugarLogger.Errorf("Ошибка получения URL-адреса %s: Ошибка = %s", URL-адрес, ошибка) } еще { сахараLogger.Infof("Успех! Код статуса = %s для URL %s", соответственно Статус, URL) или Тело.Закрыть() } } {"level":"info","ts ":1558883371.550854,"вызывающий":"basiclogger/UberGoLogger. go:27","msg":"Ошибка получения URL-адреса www.google.com : Ошибка = Получить www.google.com: неподдерживаемая схема протокола """}
{"level":"info","ts":1558883371.77706,"caller":"basiclogger/UberGoLogger.go:29","msg":"Успешно! Код статуса = 200 OK для URL-адреса http://www.google. ком"}
3.4 Настройка регистратора
3.4.1 Запись в файл вместо консоли
zap.NewProduction(),
мы будем использовать метод zap.New(...)
и передавать все конфигурации вручную. func New(core zapcore.Core, options ... Option) *Logger
zapcore.Core
, requires three things – Encoder
, WriteSyncer
, LogLevel
NewJSONEncoder()
и использовать PRESET ProductionEncoderConfig() 9.0209 .
zapcore.NewJSONEncoder(zap.NewProductionEncoderConfig())
файл, _ := os.Create("./test.log")
writeSyncer := zapcore.AddSync(file)
InitLogger()
. Остальные методы — main()
/ SimpleHttpGet()
остается прежним. main()
из приведенного выше раздела вызывается с этими измененными конфигурациями регистратора, в файл будет напечатан следующий вывод — test. log
➜ LearningGo git:(master) ✗ cat test.log
{"level":"debug","ts":1558897671.680222,"msg":"Попытка выполнить запрос GET для www.google.com"}
{"level":"error","ts":1558897671.6803782,"msg":"Ошибка получения URL-адреса www.google.com : Ошибка = Получить www.google.com: неподдерживаемая схема протокола """}
{"уровень":"отладка","тс":1558897671.6803992,"msg":"Попытка выполнить запрос GET для http://www.google.com"}
{"level":"info","ts":1558897671.974973,"msg":"Success! statusCode = 200 OK для URL http://www.google.com"}
3.4.2 Изменить Json Encoder на обычный журнал Кодировщик
NewJSONEncoder()
на NewConsoleEncoder()
. возврат zapcore.NewConsoleEncoder(zap.NewProductionEncoderConfig())
main()
из приведенного выше раздела вызывается с этими измененными конфигурациями регистратора, в файле будет напечатан следующий вывод: test. log
➜ LearningGo git:(master) ✗ cat test.log
1.558898031797767e+09 отладка Попытка выполнить запрос GET для www.google.com
1.558898031797886e+09 ошибка Ошибка при получении URL-адреса www.google.com : Ошибка = Получить www.google.com: неподдерживаемая схема протокола ""
1.5588980317979e+09 отладка Попытка выполнить запрос GET для http://www.google.com
1,5588980320494049e+09 Информация Удачи! statusCode = 200 OK для URL http://www.google.com
3.4.3 Изменение кодировки времени и добавление сведений о вызывающем абоненте
ProductionConfig()
и внесите следующие изменения: функция getEncoder() zapcore.Encoder {
encoderConfig := zap.NewProductionEncoderConfig()
encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder
encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder
вернуть zapcore.NewConsoleEncoder (encoderConfig)
}
Option
to zap.New(..)
function logger := zap.New(core, zap.AddCaller())
main()
из приведенного выше раздела вызывается с этими измененными конфигурации регистратора, то в файл будет напечатан следующий вывод: test.log
➜ LearningGo git:(master) ✗ cat test.log
2019-05-27T01:06:37.680+0530 DEBUG basiclogger/UberGoLogger.go:47 Попытка выполнить запрос GET для www.google.com
2019-05-27T01:06:37.680+0530 ОШИБКА basiclogger/UberGoLogger. go:50 Ошибка при получении URL-адреса www.google.com : Ошибка = Получить www.google.com: неподдерживаемая схема протокола ""
2019-05-27T01:06:37.680+0530 DEBUG basiclogger/UberGoLogger.go:47 Попытка выполнить запрос GET для http://www.google.com
2019-05-27T01:06:37.959+0530 ИНФОРМАЦИЯ basiclogger/UberGoLogger.go:52 Удачи! statusCode = 200 OK для URL http://www.google.com
4.1 Установка
go get -u github.com/natefinch/lumberjack
4.2. Добавление поддержки Lumberjack в zap logger
WriteSyncer
. Мы изменим функцию getLogWriter(), как показано ниже: func getLogWriter() zapcore. WriteSyncer {
лесоруб := &лесоруб.Логгер{
Имя файла: "./test.log",
Максимальный размер: 10,
Максимальное количество резервных копий: 5,
Максимальный возраст: 30,
Сжатие: ложь,
}
вернуть zapcore.AddSync(lumberJackLogger)
}
4.3 Тестирование всего вместе
Узнайте больше о двунаправленных символах Unicode переменная сахараLogger *zap.SugaredLogger функция main() { ИнитЛоггер() отложить SugarLogger.Sync() SimpleHttpGet("www.google.com") SimpleHttpGet("http://www.google.com") } функция InitLogger() { WriterSyncer := getLogWriter() Кодировщик : = getEncoder() ядро := zapcore. NewCore(кодировщик, WriterSyncer, zapcore.DebugLevel) регистратор := zap.New(core, zap.AddCaller()) SugarLogger = регистратор.Sugar() } функция getEncoder() zapcore.Encoder { encoderConfig := zap.NewProductionEncoderConfig() encoderConfig.EncodeTime = zapcore.ISO8601TimeEncoder encoderConfig.EncodeLevel = zapcore.CapitalLevelEncoder вернуть zapcore.NewConsoleEncoder(encoderConfig) } функция getLogWriter() zapcore. WriteSyncer { лесорубДжекЛоггер := &лесоруб.Логгер{ Имя файла: "./test.log", Максимальный размер: 10, MaxBackups: 5, Максимальный возраст: 30, Сжатие: ложь, } возврат zapcore.AddSync(lumberJackLogger) } функция SimpleHttpGet (строка URL-адреса) { сахараLogger.Debugf("Попытка выполнить запрос GET для %s", url) соответственно, ошибка := http. Get(url) если ошибка != ноль { SugarLogger.Errorf("Ошибка получения URL-адреса %s: Ошибка = %s", URL-адрес, ошибка) } еще { сахараLogger.Infof("Успех! Код статуса = %s для URL %s", соответственно Статус, URL) или Тело.Закрыть() } } 2019-05-27T01:22:20.197+0530 DEBUG basiclogger/UberGoLogger.go:52 Попытка выполнить запрос GET для www.google.com
2019-05-27T01:22:20.